前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何构造一个 Date()

如何构造一个 Date()

原创
作者头像
张紫娃
修改2024-04-22 08:07:49
2630
修改2024-04-22 08:07:49
举报

如何构造一个 Date()

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

代码语言:java
复制
// Sun Apr 21 17:15:41 CST 2024 执行如下代码
new Date(1562501898000L)); // Sun Jul 07 20:18:18 CST 2019  【当前时区】
new Date());               // Sun Apr 21 17:15:41 CST 2024  【当前时区】

2. Timestamp 【时间戳显示为当前时区时间】

代码语言:java
复制
new Timestamp(1562501898000L));                      // 2019-07-07 20:18:18.0  【当前时区】
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 【当前时区】

3.Calendar 【当前时区时间】

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

4. Instant 转 Date 【时间戳显示为当前时区时间】

代码语言: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小时

5. ZONED_DATE_TIME 转 Date 【时间戳显示为当前时区时间】

代码语言:java
复制
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区时间转换会减去一个小时

6. OFFSET_DATE_TIME 转 Date 【时间戳显示为当前时区时间】

代码语言:java
复制
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区时间转换会减去一个小时

7. LOCAL_DATE_TIME 转 Date 【时间戳显示为当前时区时间】

代码语言:java
复制
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时区时间不会变

8. String转Date

8.1 、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"));

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

8.2、DateUtils的共通方法

代码语言:java
复制
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"));

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
代码语言: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"));

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
代码语言:java
复制
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何构造一个 Date()
    • 1. 构造方法 【时间戳显示为当前时区时间】
      • 2. Timestamp 【时间戳显示为当前时区时间】
        • 3.Calendar 【当前时区时间】
          • 4. Instant 转 Date 【时间戳显示为当前时区时间】
            • 5. ZONED_DATE_TIME 转 Date 【时间戳显示为当前时区时间】
              • 6. OFFSET_DATE_TIME 转 Date 【时间戳显示为当前时区时间】
                • 7. LOCAL_DATE_TIME 转 Date 【时间戳显示为当前时区时间】
                  • 8. String转Date
                    • 8.1 、SimpleDateFormat不推荐
                    • 8.2、DateUtils的共通方法
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档