DateTimeFormatter的用法

DateTimeFormatter

提示:该文章的部分内容摘自廖雪峰微博,代码部分为自己测试内容



前言

使用旧的Date对象时,我们用**SimpleDateFormat**进行格式化显示。使用新的LocalDateTime或ZonedLocalDateTime时,我们要进行格式化显示,就要使用DateTimeFormatter。

和SimpleDateFormat不同的是,DateTimeFormatter不但是不变对象,它还是线程安全的
因为SimpleDateFormat不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。
而DateTimeFormatter可以只创建一个实例,到处引用。

创建DateTimeFormatter时,我们仍然通过传入格式化字符串实现:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

格式化字符串的使用方式与SimpleDateFormat完全一致。

另一种创建DateTimeFormatter的方法是,传入格式化字符串时,同时指定Locale:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, yyyy-MMMM-dd HH:mm", Locale.US);

这种方式可以按照Locale默认习惯格式化。

一、使用java类库

import java.time.format.DateTimeFormatter;

二、使用步骤

1.LocalDate转换

代码如下(示例):

    	 //解析日期
        String dateStr= "2016年10月25日";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        //LocalDate练习
        LocalDate date= LocalDate.parse(dateStr, formatter);
        System.out.println(date);
        String format1 = date.format(formatter);
        System.out.println(format1);
          2016-10-25
		20161025

2.LocalDateTime 的转换

代码如下(示例):

     	//LocalDateTime练习
     	String dateTimeStr= "2016-10-25 12:00:00";
        DateTimeFormatter formatter02 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime=LocalDateTime.parse(dateTimeStr,formatter02);
        System.out.println(localDateTime);
        String format = localDateTime.format(formatter02);
        System.out.println(format);
		2016-10-25T12:00
		2016-10-25 12:00:00

## 3.一般常见的时间格式

这里采用的话呢可以使用枚举类也可以是接口(DateConstants
代码如下(示例):

/** 默认的时间格式为"yyyy-MM-dd HH:mm:ss",若后续有其他需求,则可以另行添加 */
	static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
	
	/** 格式 "yyyy/MM/dd HH:mm:ss" */
	static final String DEFAULT_DATE_FORMAT_2 = "yyyy/MM/dd HH:mm:ss";
	
	/** 格式 "yyyy-MM-dd" */
	static final String DATE_FORMAT = "yyyy-MM-dd";
	
	static final String DATE_FORMAT_2 = "yyyy/MM/dd";
	
	/** 格式 "yyyy-MM" */
	static final String MONTH_FORMAT = "yyyy-MM";
	
	static final String MONTH_FORMAT_2 = "yyyy/MM";
	
	// 默认的时间格式为"yyyy/MM/dd HH:mm:ss",若后续有其他需求,则可以另行添加
	static DateTimeFormatter defaultFormatter = DateTimeFormat.forPattern(DEFAULT_DATE_FORMAT);
	
	// 当前日期标签,很多类似日志文件需要打时间标签
	static final String DATE_MARK = "yyyyMMdd";
	
	// 默认的时间格式
	//private static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
	static final String HOUR_MINUTE = "HH:mm";

	/**
	 * 默认的stringbuffer 长度,
	 * stringbuffer 的默认长度是16,
	 * 增长策略是每次增加16字节,
	 * so可以一次性申请100个字节,提交效率
	 */
	int DEFAULT_STRINGBUFFER_LENGTH = 100;

	/** 响应状态: STATUS_OK = 1 */
	static final int DB_INSERT_OK = 1;
	/** 星期一  1 */
	int MONDAY = 1;
	int TUESDAY =2;
	int WEDNESDAY = 3;
	int THURSDAY = 4;
	int FRIDAY = 5;
	int ALLWEEK = 0;
	
	// 公司名称
	static final String COMPANY_NAME = "XXXXX";
  • 34
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小七会喷火

小七想要bi

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值