首页 > Java > 在 Java 中将月、日和年分解为整数最佳方法是什么?

在 Java 中将月、日和年分解为整数最佳方法是什么?

上一篇 下一篇

在 Java 中将格式为“2 年 2010 月 <> 日”格式的 a 转换为 a 的最佳方法是什么?StringDate

最终,我想将月、日和年分解为整数,以便我可以使用

Date date = new Date();
date.setMonth()..
date.setYear()..
date.setDay()..
date.setlong currentTime = date.getTime();

将日期转换为时间。

分割线

网友回答:

啊,是的,Java Date讨论,再次。为了处理日期操作,我们使用Date,Calendar,GregorianCalendar和SimpleDateFormat。例如,使用您的 1 月日期作为输入:

Calendar mydate = new GregorianCalendar();
String mystring = "January 2, 2010";
Date thedate = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(mystring);
mydate.setTime(thedate);
//breakdown
System.out.println("mydate -> "+mydate);
System.out.println("year   -> "+mydate.get(Calendar.YEAR));
System.out.println("month  -> "+mydate.get(Calendar.MONTH));
System.out.println("dom    -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow    -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour   -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli  -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm   -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod    -> "+mydate.get(Calendar.HOUR_OF_DAY));

然后你可以用这样的东西来操作它:

Calendar now = Calendar.getInstance();
mydate.set(Calendar.YEAR,2009);
mydate.set(Calendar.MONTH,Calendar.FEBRUARY);
mydate.set(Calendar.DAY_OF_MONTH,25);
mydate.set(Calendar.HOUR_OF_DAY,now.get(Calendar.HOUR_OF_DAY));
mydate.set(Calendar.MINUTE,now.get(Calendar.MINUTE));
mydate.set(Calendar.SECOND,now.get(Calendar.SECOND));
// or with one statement
//mydate.set(2009, Calendar.FEBRUARY, 25, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
System.out.println("mydate -> "+mydate);
System.out.println("year   -> "+mydate.get(Calendar.YEAR));
System.out.println("month  -> "+mydate.get(Calendar.MONTH));
System.out.println("dom    -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow    -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour   -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli  -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm   -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod    -> "+mydate.get(Calendar.HOUR_OF_DAY));

分割线

网友回答:

这是一条艰难的方式,自Java 1.1(1997)以来,这些setter方法已被弃用。此外,自从在Java 8(2014)中引入API以来,整个类实际上已被弃用(不推荐)。java.util.Datejava.util.Datejava.time

只需使用与输入字符串匹配的模式来格式化日期(此处提供了教程)。DateTimeFormatter

在“2 年 2010 月 <> 日”作为输入字符串的特定情况下:

  1. “一月”是全文月份,因此请使用其模式MMMM
  2. “2”是短的月份日期,因此请使用它的模式。d
  3. “2010”是 4 位数的年份,因此请使用它的模式。yyyy
String string = "January 2, 2010";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date); // 2010-01-02

注意:如果您的格式模式恰好也包含时间部分,请使用代替 。而且,如果您的格式模式恰好也包含时区,请改用。LocalDateTime#parse(text, formatter)LocalDate#parse(text, formatter)ZonedDateTime#parse(text, formatter)

以下是 javadoc 的相关性摘录,列出了所有可用的格式模式:

象征 意义 介绍 例子
G 时代 发短信 广告;公元;一个
u 2004;04
y 时代年份 2004;04
D 一年中的某一天 189
M/L 一年中的月份 数字/文本 7;07;七月;七月;J
d 月中的某天 10
Q/q 季度 数字/文本 3;03;问3;第三季度
Y 基于周的年份 1996;96
w 基于周的年份 27
W 月中的一周 4
E 星期几 发短信 星期二;星期二;T
e/c 本地化的星期几 数字/文本 2;02;星期二;星期二;T
F 月中的一周 3
a 上午下午 发短信 下午
h 上午一小时下午时钟 (1-12) 12
K 下午一小时 (0-11) 0
k 上午一小时下午时钟 (1-24) 0
H 一天中的小时 (0-23) 0
m 小时分 30
s 分钟数秒 55
S 秒分之一 分数 978
A 一天中的毫秒 1234
n 纳秒级 987654321
N 纳米日间 1234000000
V 时区标识 区域标识 美洲/Los_Angeles;Z;-08:30
z 时区名称 区域名称 太平洋标准时间;太平洋标准时间
O 局部区域偏移 偏移-O 格林威治标准时间+8;格林威治标准时间+08:00;世界协调时-08:00;
X 区域偏移“Z”表示零 偏移量-X Z;-08;-0830;-08:30;-083015;-08:30:15;
x 区域偏移 偏移量-X +0000;-08;-0830;-08:30;-083015;-08:30:15;
Z 区域偏移 偏移-Z +0000;-0800;-08:00;

请注意,它有几个针对更流行模式的预定义格式化程序。因此,您可以使用 .这是可能的,因为它们与线程安全相反。因此,如有必要,您也可以定义自己的定义。DateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);DateTimeFormatter.RFC_1123_DATE_TIMESimpleDateFormat

对于特定的输入字符串格式,您不需要使用显式:标准的ISO 8601日期,如2016-09-26T17:44:57Z,可以直接解析,因为它已经使用了格式化程序。同样, 分析不带时间分量的 ISO 日期(请参阅),并分析添加了偏移量和时区的 ISO 日期(请参阅)。DateTimeFormatterLocalDateTime#parse(text)ISO_LOCAL_DATE_TIMELocalDate#parse(text)ISO_LOCAL_DATEZonedDateTime#parse(text)ISO_ZONED_DATE_TIME


Java 8 之前

如果您尚未使用 Java 8,或者被迫使用 ,请使用与输入字符串匹配的格式模式来格式化日期。java.util.DateSimpleDateFormat

String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010

请注意显式参数的重要性。如果省略它,那么它将使用默认区域设置,该区域设置不一定是输入字符串的月份名称中使用的英语。如果区域设置与输入字符串不匹配,那么即使格式模式似乎有效,您也会令人困惑地得到一个。Localejava.text.ParseException

以下是 javadoc 的相关性摘录,列出了所有可用的格式模式:

日期或时间组件 介绍 例子
G 时代指示符 发短信 广告
y 1996;96
Y 周年 2009;09
M/L 一年中的月份 七月;七月;07
w 一年中的一周 27
W 每月的周 2
D 一年中的一天 189
d 月中的一天 10
F 每月中的星期几 2
E 星期几 发短信 星期二;星期二
u 周数 1
a 上午/下午标记 发短信 下午
H 一天中的小时 (0-23) 0
k 一天中的小时 (1-24) 24
K 上午/下午的小时数 (0-11) 0
h 上午/下午的小时数 (1-12) 12
m 分钟数(小时) 30
s 秒分 55
S 毫秒 978
z 时区 一般时区 太平洋标准时间;太平洋标准时间;格林威治标准时间-08:00
Z 时区 RFC 822 时区 -0800
X 时区 ISO 8601 时区 -08;-0800;-08:00

请注意,模式区分大小写,四个或更多字符的基于文本的模式表示完整形式;否则,如果可用,则使用简短或缩写形式。所以例如 或更多是不必要的。MMMMM

以下是迄今为止解析给定字符串的有效模式的一些示例:SimpleDateFormat

输入字符串 模式
2001.07.04 AD at 12:08:56 PDT yyyy.MM.dd G 'at' HH:mm:ss z
周三, 4月 01, ‘<> EEE, MMM d, ''yy
下午12:08 h:mm a
太平洋夏令时间中午 12 点 hh 'o''clock' a, zzzz
下午 0:08,太平洋夏令时 K:mm a, z
02001.七月.04 AD 12:08 下午 yyyyy.MMMM.dd GGG hh:mm aaa
周三, 4 七月 2001 12:08:56 -0700 EEE, d MMM yyyy HH:mm:ss Z
010704120856-0700 yyMMddHHmmssZ
2001-07-04T12:08:56.235-0700 yyyy-MM-dd'T'HH:mm:ss.SSSZ
2001-07-04T12:08:56.235-07:00 yyyy-MM-dd'T'HH:mm:ss.SSSXXX
2001年W27-3 YYYY-'W'ww-u

重要的注意事项是,这不是线程安全的。换句话说,您永远不应该将其声明并分配为静态或实例变量,然后从不同的方法/线程重用它。应始终在本地方法范围内创建全新的它。SimpleDateFormat

分割线

网友回答:

String str_date = "11-June-07";
DateFormat formatter = new SimpleDateFormat("dd-MMM-yy");
Date date = formatter.parse(str_date);

模板简介:该模板名称为【在 Java 中将月、日和年分解为整数最佳方法是什么?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 179次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-11
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信模板 微信公众平台 微信图片 单页式简历模板 html5 自适应 微信文章 企业网站 响应式 微信素材
您可能会喜欢的其他模板