时间

标准的时间一般长这样子🎑

Wed Oct 19 2022 18:40:04 GMT+0800 (中国标准时间) {}

Wed Oct 19 2022 18:40:04这一坨 翻译过来就是2022/10/19 18:41:13
那么GMT+0800 (中国标准时间) {}表示啥呢?
GMT(格林尼治标准时间(英语:Greenwich Mean Time,GMT)又称格林尼治平均时间)
+800表示中国位于东八区,想起了一部剧🕊
由于GMT计时每年有丢丢误差,目前已经被原子钟报时的协调世界时(UTC)所取代

有兴趣的可了解下夏令时
Epoch Time是计算从1970年1月1日零点(格林威治时区/GMT+00:00)到现在所经历的秒数
java中获取现在时间戳

long l = System.currentTimeMillis();

Date ;java.util.Date;

Date date=new Date();
        int year = date.getYear()+1900;
        int month = date.getMonth()+1;
        int date1 = date.getDate();
        System.out.println(date.toString());
        System.out.println(date.toLocaleString());
        System.out.println(date.toGMTString());
//Wed Oct 19 19:11:34 CST 2022
//2022年10月19日 下午7:11:34
//19 Oct 2022 11:11:34 GMT

格式加工一下

Date date =new Date();
var sdf=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
sout(sdf.format(date))

Calendar
相较于Date,Calendar可以设置时区,做一些简单日期加减

// 简单例子
Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int date=c.get(Calendar.Date);
var sdf=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
sout(sdf.format(c.getTime()));//c.getTime()将Calendar转为Date对象
// 自定义
Calendar c=Calendar.getInstance();
c.clear();
c.set(Calendar.YEAR,2022);
c.set(Calendar.MONTH,9);// 10月
c.set(Calendar.DATE,20);

//or 一把梭
c.set(2022,9,20,12,0,0);
System.out.println(new SimpleDateFormat("YYYY-MM-dd HH:mm:ss").format(c.getTime()));
//2022-10-20 12:00:00

上面说了Calendar可以设置时区
TimeZone

// 初始化
TimeZone timeZone= TimeZone.getDefault();//系统默认时区,有兴趣打印一下
System.out.println(timeZone.getID());//Asia/Shanghai,亚洲上海
System.out.println(Arrays.deepToString(TimeZone.getAvailableIDs()));//所有可用时区
//[Africa/Abidjan, Africa/Accra, Africa/Addis_Ababa, Africa/Algiers, Africa/Asmara, Africa/Asmera, Africa/Bamako, Africa/Bangui, Africa/Banjul, Africa/Bissau, Africa/Blantyre, Africa/Brazzaville, Africa/Bujumbura.....]一长串.......🕊

//自定义
TimeZone timeZone=TimeZone.getTimeZone("America/Maceio");

//question 已知上海时间,求同一时刻America/Maceio的时间
Calendar c= Calendar.getInstance();
 c.clear();
 c.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
 c.set(2022,9,20,12,0,0);
 var sdf =new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
 sdf.setTimeZone(TimeZone.getTimeZone("America/Maceio"));
 System.out.println(sdf.format(c.getTime()));
// 2022-10-20 01:00:00

// 简单日期运算
c.add(Calendar.DATE,5);
// 2022年10月25日 下午12:00:00
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文章总结自Hollis的知识星球,直面Java版块,公众号Hollis,转侵删 1.什么是时区,北京时间和洛杉矶时...
    站在海边看远方阅读 6,469评论 0 4
  • GMT格林尼治标准时间,这个中学地理上学过。地球自传一圈是一天,公转一圈是一年。这个是早期的一种度量标准,各个地方...
    联想桥南阅读 750评论 0 1
  • 我们先来看一些基本概念,然后再介绍 Java 的日期和时间 API。关于日期和时间,有一些基本概念,包括时区、时刻...
    acc8226阅读 503评论 1 1
  • 随着得物越做越大越做越强, 国际化的脚步也越来越快. 国际化给程序带来2大类需要处理的问题: 语言 和 日期时间....
    daydaygo阅读 720评论 0 2
  • 参考Java日期时间使用总结Java Calendar,Date,DateFormat,TimeZone,Loca...
    合肥黑阅读 4,000评论 1 6