如何构造一个 Date()

2024-07-30 17:25:22 浏览数 (2)

如何构造一个 Date()

构造方法 【时间戳 显示为 当前时区时间】

代码语言:java复制
ZonedDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)); 
// 于2024-07-30T15:07:31.9488855 08:00[Asia/Shanghai]执行如下代码

new Date(1562501898000L)); // Sun Jul 07 20:18:18 CST 2019  【当前时区】
new Date());               // Tue Jul 30 15:07:31 CST 2024  【当前时区】

根据Calendar 【时间戳 显示为 当前时区时间】

代码语言:javascript复制
// Sun Apr 21 17:26:41 CST 2024 执行如下代码
Calendar.getInstance().getTime()); // Sun Apr 21 17:26:41 CST 2024  【当前时区】

根据Timestamp 【时间戳 显示为 当前时区时间】

代码语言:java复制
Date date1 = new Timestamp(1562501898000L);          // 2019-07-07 20:18:18.0  【当前时区】
new Date(new Timestamp(1562501898000L).getTime()));  // Sun Jul 07 20:18:18 CST 2019 【当前时区】

根据Instant【时间戳 显示为 当前时区时间】

代码语言:java复制
Date.from(Instant.ofEpochMilli(1562501898888L)));   //Sun Jul 07 20:18:18 CST 2019 【当前时区】
Date.from(Instant.ofEpochSecond(1562501898)));      //Sun Jul 07 20:18:18 CST 2019 【当前时区】
Date.from(Instant.ofEpochSecond(1562501898, 888))); //Sun Jul 07 20:18:18 CST 2019 【当前时区】

Date.from(Instant.parse("2019-07-07T20:18:18.000000888Z"))); //Mon Jul 08 04:18:18 CST 2019 【当前时区】
Date.from(Instant.parse("2019-07-07T20:18:18Z")));           //Mon Jul 08 04:18:18 CST 2019 【当前时区】
// 这里把"2019-07-07T20:18:18.000000888Z"视为0时区时间了,故在东8区里多了8小时

ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneId.of("Asia/Tokyo"));
Date.from(ZONED_DATE_TIME.toInstant())); //Sun Jul 07 19:18:18 CST 2019  【当前时区】
// 东9区时间到东8区时间转换会减去一个小时

OffsetDateTime OFFSET_DATE_TIME = OffsetDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneOffset.ofHours(9));
Date.from(OFFSET_DATE_TIME.toInstant())); //Sun Jul 07 19:18:18 CST 2019  【当前时区】
// 东9区时间到东8区时间转换会减去一个小时

LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);
Date.from(LOCAL_DATE_TIME.toInstant(ZoneOffset.UTC)));        //Mon Jul 08 04:18:18 CST 2019  【当前时区】
// 把LocalDateTime视为0时区的时间转为Instant,故转到东8时区会加8小时
Date.from(LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(8)))); //Sun Jul 07 20:18:18 CST 2019  【当前时区】
// 把LocalDateTime视为东8区的时间转为Instant,故转到东8时区时间不会变

String转Date

SimpleDateFormat不推荐

代码语言:java复制
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("格式化器用的时区是:"   dateFormat.getTimeZone().getID()   ":"   dateFormat.parse("2019-07-07 20:18:18"));
// 格式化器用的时区是:Asia/Shanghai:Sun Jul 07 20:18:18 CST 2019   // 相同时区故直接转换为Date

dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
System.out.println("格式化器用的时区是:"   dateFormat.getTimeZone().getID()   ":"   dateFormat.parse("2019-07-07 20:18:18"));
// 格式化器用的时区是:Asia/Tokyo:Sun Jul    07 19:18:18 CST 2019   // 把传入的时间当成日本时间、所以Date会少一个小时、因为中国比日本慢一个小时    

8.2、DateUtils的共通方法

代码语言:java复制
import org.apache.commons.lang3.time.DateUtils;

DateUtils.parseDate("2019-07-32 20:18:18  0800", "yyyy-MM-dd HH:mm:ss Z"));         //Thu Aug 01 20:18:18 CST 2019    【视String为当前时区时间去类型转换】
// 不合理日期会自动换算

DateUtils.parseDateStrictly("2019-07-07 20:18:18  0800", "yyyy-MM-dd HH:mm:ss Z")); //Sun Jul 07 20:18:18 CST 2019    【视String为当前时区时间去类型转换】
// 不合理日期直接报错
代码语言:java复制
DateUtils.parseDate("2019-7-07 20:18:18.888  0800","yyyy-MM-dd HH:mm:ss.SSS Z"));
DateUtils.parseDate("2019-7-07 20:18:18  0800","yyyy-MM-dd HH:mm:ss Z"));
DateUtils.parseDate("2019-7-07 20:18:18.888","yyyy-MM-dd HH:mm:ss.SSS"));
DateUtils.parseDate("2019-7-07 20:18:18","yyyy-MM-dd HH:mm:ss"));
DateUtils.parseDate("2019-7-07 20:18","yyyy-MM-dd HH:mm"));
DateUtils.parseDate("2019-7-07 20","yyyy-MM-dd HH"));
DateUtils.parseDate("2019-7-07","yyyy-MM-dd"));
DateUtils.parseDate("2019-7","yyyy-MM"));
DateUtils.parseDate("2019","yyyy"));

DateUtils.parseDate("2019/7/07 20:18:18.888  0800","yyyy/MM/dd HH:mm:ss.SSS Z"));
DateUtils.parseDate("2019/7/07 20:18:18  0800","yyyy/MM/dd HH:mm:ss Z"));
DateUtils.parseDate("2019/7/07 20:18:18.888","yyyy/MM/dd HH:mm:ss.SSS"));
DateUtils.parseDate("2019/7/07 20:18:18","yyyy/MM/dd HH:mm:ss"));
DateUtils.parseDate("2019/7/07 20:18","yyyy/MM/dd HH:mm"));
DateUtils.parseDate("2019/7/07 20","yyyy/MM/dd HH"));
DateUtils.parseDate("2019/7/07","yyyy/MM/dd"));
DateUtils.parseDate("2019/7","yyyy/MM"));
DateUtils.parseDate("2019","yyyy"));

DateUtils.parseDate("20190707 20:18:18.888  0800","yyyyMMdd HH:mm:ss.SSS Z"));
DateUtils.parseDate("20190707 20:18:18  0800","yyyyMMdd HH:mm:ss Z"));
DateUtils.parseDate("20190707 20:18:18.888","yyyyMMdd HH:mm:ss.SSS"));
DateUtils.parseDate("20190707 20:18:18","yyyyMMdd HH:mm:ss"));
DateUtils.parseDate("20190707 20:18","yyyyMMdd HH:mm"));
DateUtils.parseDate("20190707 20","yyyyMMdd HH"));
DateUtils.parseDate("20190707","yyyyMMdd"));
DateUtils.parseDate("201907","yyyyMM"));
DateUtils.parseDate("2019","yyyy"));

Sun Jul 07 20:18:18 CST 2019
Sun Jul 07 20:18:18 CST 2019
Sun Jul 07 20:18:18 CST 2019
Sun Jul 07 20:18:18 CST 2019
Sun Jul 07 20:18:00 CST 2019
Sun Jul 07 20:00:00 CST 2019
Sun Jul 07 00:00:00 CST 2019
Mon Jul 01 00:00:00 CST 2019
Tue Jan 01 00:00:00 CST 2019

0 人点赞