Java SimpleDateFormat - Java 日期格式

介绍

JavaSimpleDateFormatDateFormat类用于日期格式化,主要用于我们需要显示或利用Java的日期和时间功能的地方。

Java「日期格式」

  • DateFormat 用于将日期格式化为 String 基于作为输入提供的特定本地
  • 该本地用于指定区域和语言,使代码对用户更为本地化
  • 写日期的方式在世界不同地区不同。例如, 31st Dec 2017 在印度将写作 31-12-2017 但在美国将写作 12-31-2017.
  • DateFormat 类不同步,建议为每个 thread创建单独的实例。

可以使用DateFormat类的getDateInstance()getTimeInstance()方法创建一个DateFormat对象。

1Locale loc = new Locale("en", "US");
2DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, loc);

<$>[注] 注: 自版本 19 以来,Constructor Locale(String, String) 已被删除

1Locale loc = new Locale.Builder().setLanguage("en").setRegion("US").build();

美元

「DateFormat」的「getDateInstance」方法需要两个输入参数.第一个参数指定要使用的「DateFormat」,第二个参数是本地参数。

使用格式

DateFormat类具有负责格式化的格式化方法。

1Locale locale = new Locale("fr", "FR");
2DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
3String date = dateFormat.format(new Date());
4System.out.print(date);

此代码将日期格式为法语(fr)语言和法国(FR)区域:

1[secondary_label Output]
23 janv. 2018

使用getTimeInstance()

为了创建一个DateFormat实例,我们正在使用getDateInstance()方法。

要执行一个时间格式,我们需要一个时间实例,我们将使用getTimeInstance()方法获取一个时间实例。

1Locale locale = new Locale("fr", "FR");
2DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
3String date = dateFormat.format(new Date());
4System.out.print(date);

此代码将格式化时间在法语(fr)语言和法国(FR)区域:

1[secondary_label Output]
211:03:01

Java 「SimpleDateFormat」

SimpleDateFormatDateFormat类似,它们之间的唯一主要区别在于SimpleDateFormat可用于格式化(Date转换为String)和解析(String转换为Date转换)((社区/教程/如何转换java-date-to-specific-timezone-format))的本地支持,而DateFormat没有本地支持。

「SimpleDateFormat」可以使用「SimpleDateFormat」构建器创建,构建器是一个参数化构建器,需要一个 String 模式作为参数。

1String pattern = "MM-dd-yyyy";
2SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

字符串模式是将用于格式化日期的模式,输出将在该模式中生成为MM-dd-yyyy

巴特尔

让我们看看应该用于格式化模式的模式语法。

2018年(yy),18年(y),18年( ),7月(MMM),7月(MMM),7月(MMM),7月(MM),7月(MM),7月(MM),7月(MMBR1_),周( ) =============================================================================================================================================================================================================================================================== FQQ 月份的周日 QQ 4 QQ 每周的日名 周二 Tue u 周一代表周一的日名 周一代表周一 2 代表周二的日名 等 周二代表周二 QQ a AM 或 PM 标记 AM 日中H QQ小时 (0-23) 12 Q 日中K 小时 (1-24) 23 Q QQ KQQ小时以上午/下午为12小时格式(0-11) QQ0分 QQ小时以上午/下午为12小时格式(1-12) QQ12分 QM分(分钟) QQ59分 QX分(分钟) QQ35分 QX分(分钟) 第2分. S QQ 在分钟 QQ 978 QQ z QQ 时区 太平洋标准时间; PST; GMT-08:00 QQ Z QQ 时区相冲 (RFC模式) QQ-0800 QQ QQ. X QQ Timezone 以 ISO 格式 QQ-08; -0800; -08:00 QQ 相抵

有些字母应该用在不同的数量为不同的结果,如为月:

TypePatternExample Output
Full MonthMMMMJuly
Abbreviated MonthMMMJul
Numeric MonthMM07

例子

现在让我们来看看不同的日期和时间格式的几个例子。

PatternResult
MM/dd/yyyy01/02/2018
dd-M-yyyy hh:mm:ss02-1-2018 06:07:59
dd MMMM yyyy02 January 2018
dd MMMM yyyy zzzz02 January 2018 India Standard Time
E, dd MMM yyyy HH:mm:ss zTue, 02 Jan 2018 18:07:59 IST

使用SimpleDateFormat()

为了分析一个日期,我们需要使用构建器创建一个SimpleDateFormat实例,然后使用format()方法:

1String pattern = "MM-dd-yyyy";
2SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
3String date = simpleDateFormat.format(new Date());
4System.out.println(date);

此代码将输出MM-dd-yyyy:

1[secondary_label Output]
201-02-2018

此模式产生月份为年,月为日。字符类型(和资本化)和字符数量为字符串做出贡献. 月将表示为两位数,日为两位数,年为四位数。

此代码显示2018年1月2日的日期为01-02-2018

对于解析时间,我们必须在创建SimpleDateFormat实例时更改模式。

1String pattern = "HH:mm:ss.SSSZ";
2SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
3String date = simpleDateFormat.format(new Date());
4System.out.println(date);

此代码将输出HH:mm:ss.SSSZ:

1[secondary_label Output]
213:03:15.454+0530

此模式产生小时,分钟,,毫秒时区抵消为小时(RFC模式)

此代码显示时间为13:03:15.454+0530

使用parse()

解析是将 String 转换为java.util.Date实例,我们可以使用 SimpleDateFormat 类的parse()方法解析一个日期实例的字符串,要解析一个 String to Date,我们需要一个 SimpleDateFormat 类的实例和一个字符串模式作为该类的构建者的输入。

1String pattern = "MM-dd-yyyy";
2SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
3Date date = simpleDateFormat.parse("12-01-2018");
4System.out.println(date);

这将输出没有指定时间的日期(12-01-2018):

1[secondary_label Output]
2Sat Dec 01 00:00:00 IST 2018

现在让我们来看看‘SimpleDateFormat’的例子来分析时间。

1String pattern = "HH:mm:ss";
2SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
3Date date = simpleDateFormat.parse("22:00:03");
4System.out.println(date);

这将输出一个时间(22:00:03)没有指定日期:

1[secondary_label Output]
2Thu Jan 01 22:00:03 IST 1970

因为我们没有指定任何日期,所以该程序将 epoch 视为日期(即 01-Jan-1970)。

使用本地

我们已经在DateFormat的一部分中使用了Locale,并且我们已经看到基于地区的本地使用。

1String pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
2SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, new Locale("fr", "FR"));
3Date date = simpleDateFormat.format(new Date());
4System.out.println(date);

此代码将用法语(fr)语言和法语(FR)区域格式化当前时间:

1[secondary_label Output]
2mardi janvier 2018 14:51:02.354+0530

日和月的名称是基于提供的地点作为输入的法语 - 星期二星期二一月一月

结论

在本文中,您了解了Java的SimpleDateFormatDateFormat

** 参考:**

Published At
Categories with 技术
Tagged with
comments powered by Disqus