欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

日期格式化类

程序员文章站 2022-07-14 23:44:41
...

DateFormat格式化日期

  • getDateInstance:返回一个日期格式器,它格式化的字符串只有日期,没有时间。该方法可以传入多个参数,用于指定日期样式和Locale等参数。如果不指定这些参数,则使用默认参数。
  • getTimeInstance:返回一个时间格式器,它格式化的字符串只有时间,没有日期。该方法可以传入多个参数,用于指定时间样式和Locale等参数。如果不指定这些参数,则使用默认参数。
  • getDateTimeInstance:返回一个日期、时间格式器,它格式化的字符串既有日期,又有时间。该方法可以传入多个参数,用于指定日期样式、时间样式和Locale等参数。如果不指定这些参数,则使用默认参数。

简单的DateFormat格式化编码

时间模式字符串用来指定时间格式。在此模式中,所有的ASCII字母被保留为模式字母,定义如下:

字母

描述

示例

G

纪元标记

AD

y

四位年份

2019

M

月份

July or 07

d

一个月的日期

10

h

A.M./P.M. (1~12)格式小时

12

H

一天中的小时 (0~23)

22

m

分钟数

30

s

秒数

55

S

微妙数

234

E

星期几

Tuesday

D

一年中的日子

360

F

一个月中第几周的周几

2 (second Wed. in July)

w

一年中第几周

40

W

一个月中第几周

1

a

A.M./P.M. 标记

PM

k

一天中的小时(1~24)

24

K

A.M./P.M. (0~11)格式小时

10

z

时区

Eastern Standard Time

'

文字定界符

Delimiter

"

单引号

`

SimpleDateFormat格式化日期

SimpleDateFormat是DateFormat的子类,它可以非常灵活地格式化Date,也可用于解析各种格式的日期字符串。创建SimpleDateFormat对象时需要传入一个pattern字符串,这个pattern不是正则表达式,而是一个日期模板字符串。

import java.util.*;
import java.text.*;
public class DateFormatDemo{
    public static void main(String args[]) {
        // 初始化 Date 对象
        Date date = new Date();
        SimpleDateFormat ft = new SimpleDateFormat("E yyyy-MM-dd 'at' hh:mm:ss a zzz");
        System.out.println("Current Date: " + ft.format(date));
    }
}

以上实例编译运行结果如下:

Current Date: 星期五 2019-11-22 at 09:28:10 下午 CST

使用printf格式化日期

printf方法可以很轻松地格式化时间和日期。使用两个字母格式,它以t开头并且以下面表格中的一个字母结尾。例如:

public class DateFormatDemo{
    public static void main(String args[]) {
        // 初始化 Date 对象
        Date date = new Date();
        String str = String.format("Current Date/Time : %tc", date );
        System.out.printf(str);
    }

以上实例编译运行结果如下:

Current Date/Time : 星期五 十一月 22 21:40:38 CST 2019

如果你需要重复提供日期,那么利用这种方式来格式化它的每一部分就有点复杂了。因此,可以利用一个格式化字符串指出要被格式化的参数的索引。

索引必须紧跟在%后面,而且必须以$结束。例如:

public class DateFormatDemo{
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
       System.out.printf("%1$s %2$tB %2$td, %2$tY",  "Due date:", date);
   }
}

以上实例编译运行结果如下:

Due date: 十一月 22, 2019

或者,你可以使用<标志。它表明先前被格式化的参数要被再次使用。例如:

public class DateFormatDemo{

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();       
       // 显示格式化时间
       System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
} 

以上实例编译运行结果如下:

Due date: 十一月 22, 2019

日期和时间转换字符

字符

描述

例子

c

完整的日期和时间

Mon May 04 09:51:52 CDT 2009

F

ISO 8601 格式日期

2004-02-09

D

U.S. 格式日期 (月/日/年)

02/09/2004

T

24小时时间

18:05:19

r

12小时时间

06:05:19 pm

R

24小时时间,不包含秒

18:05

Y

4位年份(包含前导0)

2004

y

年份后2位(包含前导0)

04

C

年份前2位(包含前导0)

20

B

月份全称

February

b

月份简称

Feb

n

2位月份(包含前导0)

02

d

2位日子(包含前导0)

03

e

2位日子(不包含前导0)

9

A

星期全称

Monday

a

星期简称

Mon

j

3位年份(包含前导0)

069

H

2位小时(包含前导0), 00 到 23

18

k

2位小时(不包含前导0), 0 到 23

18

I

2位小时(包含前导0), 01 到 12

06

l

2位小时(不包含前导0), 1 到 12

6

M

2位分钟(包含前导0)

05

S

2位秒数(包含前导0)

19

L

3位毫秒(包含前导0)

047

N

9位纳秒(包含前导0)

047000000

P

大写上下午标志

PM

p

小写上下午标志

pm

z

从GMT的RFC 822数字偏移

-0800

Z

时区

PST

s

自 1970-01-01 00:00:00 GMT的秒数

1078884319

Q

自 1970-01-01 00:00:00 GMT的毫妙

1078884319047

还有其他有用的日期和时间相关的类。对于更多的细节,你可以参考到Java标准文档。

解析字符串为时间

SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。例如:

public class DateFormatDemo{

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
      String input ="2019-11-23";
      Date t; 
      try { 
          t = ft.parse(input); 
          System.out.println(t); 
      } catch (ParseException e) { 
          System.out.println("Unparseable using " + ft); 
      }
   }
}

以上实例编译运行结果如下:

Sat Nov 23 00:00:00 CST 2019

 

小弟才疏学浅,如有不当之处,还请多多指教

参考:

https://blog.****.net/chenxihua1/article/details/82490901

相关标签: 日期格式化