时间

标准的时间一般长这样子

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

你可能感兴趣的:(时间)