Java日期格式化(DateFormat类和SimpleDateFormat类)

摘要:
在Java中,可以使用DateFormat类和SimpleDateFormat类来格式化日期,下面详细介绍这两个格式化日期类的使用。DateFormat类DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。DateFormat类中常用方法如表1所示。

格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。
Java中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,下面详细介绍这两个格式化日期类的使用。

DateFormat 类

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期→文本)、解析(文本→日期)和标准化日期。
在创建 DateFormat 对象时不能使用 new 关键字,而应该使用 DateFormat 类中的静态方法 getDateInstance(),示例代码如下:

DateFormat df = DateFormat.getDatelnstance();

在创建了一个 DateFormat 对象后,可以调用该对象中的方法来对日期/时间进行格式化。DateFormat 类中常用方法如表 1 所示。

表 1 DateFormat类的常用方法
方法描述
String format(Date date)将 Date 格式化日期/时间字符串
Calendar getCalendar()获取与此日期/时间格式相关联的日历
static DateFormat getDateInstance()获取具有默认格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style)获取具有指定格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style,
Locale locale)
获取具有指定格式化风格和指定语言环境的日期格式
static DateFormat getDateTimeInstance()获取具有默认格式化风格和默认语言环境的日期/时间
格式
static DateFormat getDateTimeInstance(int
dateStyle,int timeStyle)
获取具有指定日期/时间格式化风格和默认语言环境的
日期/时间格式
static DateFormat getDateTimeInstance(int
dateStyle,int timeStyle,Locale locale)
获取具有指定日期/时间格式化风格和指定语言环境的
日期/时间格式
static DateFormat getTimeInstance()获取具有默认格式化风格和默认语言环境的时间格式
static DateFormat getTimeInstance(int style)获取具有指定格式化风格和默认语言环境的时间格式
static DateFormat getTimeInstance(int style,
Locale locale)
获取具有指定格式化风格和指定语言环境的时间格式
void setCalendar(Calendar newCalendar)为此格式设置日历
Date parse(String source)将给定的字符串解析成日期/时间

格式化样式主要通过 DateFormat 常量设置。将不同的常量传入到表 1 所示的方法中,以控制结果的长度。DateFormat 类的常量如下。

  • SHORT:完全为数字,如 12.5.10 或 5:30pm。
  • MEDIUM:较长,如 May 10,2016。
  • LONG:更长,如 May 12,2016 或 11:15:32am。
  • FULL:是完全指定,如 Tuesday、May 10、2012 AD 或 11:l5:42am CST。

使用 DateFormat 类格式化曰期/时间的示例如下:

//获取不同格式化风格和中国环境的日期
DateFormat df1 =DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
DateFormat df2 =DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
DateFormat df3 =DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
DateFormat df4 =DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
//获取不同格式化风格和中国环境的时间
DateFormat df5 =DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA);
DateFormat df6 =DateFormat.getTimeInstance(DateFormat.FULL, Locale.CHINA);
DateFormat df7 =DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CHINA);
DateFormat df8 =DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA);
//将不同格式化风格的日期格式化为日期字符串
String date1 = df1.format(newDate());
String date2 = df2.format(newDate());
String date3 = df3.format(newDate());
String date4 = df4.format(newDate());
//将不同格式化风格的时间格式化为时间字符串
String time1 = df5.format(newDate());
String time2 = df6.format(newDate());
String time3 = df7.format(newDate());
String time4 = df8.format(newDate());
//输出日期
System.out.println("SHORT:" + date1 + " " +time1);
System.out.println("FULL:" + date2 + " " +time2);
System.out.println("MEDIUM:" + date3 + " " +time3);
System.out.println("LONG:" + date4 + " " + time4);

运行该段代码,输出的结果如下:

SHORT:18-10-15 上午9:30FULL:2018年10月15日 星期一 上午09时30分43秒 CST
MEDIUM:2018-10-15 9:30:43LONG:2018年10月15日 上午09时30分43秒

该示例主要介绍了 DateFormat 类中方法与常量的结合使用,通过使用 DateFomat 类可以对日期进行不同风格的格式化。

SimpleDateFormat 类

如果使用 DateFormat 类格式化日期/时间并不能满足要求,那么就需要使用 DateFormat 类的子类——SimpleDateFormat。
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。
SimpleDateFormat 类主要有如下 3 种构造方法。

  • SimpleDateFormat():用默认的格式和默认的语言环境构造 SimpleDateFormat。
  • SimpleDateFormat(String pattern):用指定的格式和默认的语言环境构造 SimpleDateF ormat。
  • SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的语言环境构造 SimpleDateF ormat。

SimpleDateFormat 自定义格式中常用的字母及含义如表 2 所示。

表 2 日期/时间格式中的字母及其含义与示例
字母含义示例
y年份。一般用 yy 表示两位年份,yyyy 表示4 位年份使用 yy 表示的年扮,如 11;
使用 yyyy 表示的年份,如 2011
M月份。一般用 MM 表示月份,如果使用MMM,则会
根据语言环境显示不同语言的月份
使用 MM 表示的月份,如 05;
使用 MMM 表示月份,在 Locale.CHINA
语言环境下,如“十月”;在 Locale.US
语言环境下,如 Oct
d月份中的天数。一般用 dd 表示天数使用 dd 表示的天数,如 10
D年份中的天数。表示当天是当年的第几天, 用 D 表示使用 D 表示的年份中的天数,如 295
E星期几。用 E 表示,会根据语言环境的不同, 显示不
同语言的星期几
使用 E 表示星期几,在 Locale.CHINA 语
言环境下,如“星期四”;在 Locale.US语
言环境下,如 Thu
H一天中的小时数(0~23)。一般用 HH 表示小时数使用 HH 表示的小时数,如 18
h一天中的小时数(1~12)。一般使用 hh 表示小时数使用 hh 表示的小时数,如 10 (注意 10 有
可能是 10 点,也可能是 22 点)
m分钟数。一般使用 mm 表示分钟数使用 mm 表示的分钟数,如 29
s秒数。一般使用 ss 表示秒数使用 ss 表示的秒数,如 38
S毫秒数。一般使用 SSS 表示毫秒数使用 SSS 表示的毫秒数,如 156

例 1

编写 Java 程序,使用 SimpleDateFormat 类格式化当前日期并打印,日期格式为“xxxx 年 xx 月 xx 日星期 xxx 点 xx 分 xx 秒”,具体的实现代码如下:

importjava.text.SimpleDateFormat;
importjava.util.Date;
public classTest13 {
    public static voidmain(String[] args) {
        Date now = new Date(); //创建一个Date对象,获取当前时间
        //指定格式化格式
        SimpleDateFormat f = new SimpleDateFormat("今天是 " + "yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");
        System.out.println(f.format(now)); //将当前时间袼式化为指定的格式
}
}

该程序的运行结果如下:

今天是 2018 年 10 月 15 日 星期一 09 点 26 分 23 秒

免责声明:文章转载自《Java日期格式化(DateFormat类和SimpleDateFormat类)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【UWP】初试 SkiaSharp 中的 Runtime Effect实现一个计算器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MyBatisplus 使用IPage和Page分页

@RequestMapping(value = "/cityList",method =RequestMethod.POST) public ResponseVo<IPage<GovernanceRegulationClosePo>> querySearchCityDataList(@RequestBody Map<S...

csv文件转换json文件

import java.io.*; import java.util.Arrays; import java.util.List; // CSV文件转 json文件 // 使用csvToJSon对象的.ConvertToJson方法 带入 csv文件路径及导出路径。 public class CSVToJSon { //cvs文件 pri...

【json的处理】二、Jackson的处理

目前处理json的方法有很多,这里主要总结四种方法 1. Gson方式处理json 【json的处理】一、Gson处理 2. FastJson方式处理json 【json的处理】三、FastJson的处理 3. Jackson方式处理json 【json的处理】二、Jackson的处理 4. json-flattener方式处理json 【json的处理】...

【翻译】Flink Table API &amp;amp; SQL 自定义 Source &amp;amp; Sink

本文翻译自官网:https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/sourceSinks.html TableSource 提供访问存储在外部系统(数据库、key-value 存款,消息队列)或文件中的数据的权限。TableSource 在 TableEnviron...

门户系统整合sso cookie共享及显示用户信息

1.1 门户系统整合sso 在门户系统点击登录连接跳转到登录页面。登录成功后,跳转到门户系统的首页,在门户系统中需要从cookie中 把token取出来。所以必须在登录成功后把token写入cookie。并且cookie的值必须在系统之间能共享。 1.1.1 Cookie共享: 1、Domain:必须是相同的。 例如有多个域名: www.taotao....

使用JDBC进行简单的增删改查

JDBC为java的基础。用jdbc实现对数据库的增删改查的功能是程序员的基本要求。本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包。专门用来加载jdbc的驱动。如果数据库为oracle,相应的jar包换为ojdbc6.jar。 通过下面的代码可以练习一下,掌握jdbc的使用方法,自己可以对...