时间转换笔记"/>
Java时间转换笔记
代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;public class Time {public static void main(String[] args) {String time1 = "2021-04-19T09:39:21";String time3 = "2021-04-19 09:39:21";String time4 = "2021-04-19 09:39:21Z";String time5 = "2021-04-20T01:39:40";// 1.T只表示日期之后,时间的开始// 2.日期最后的Z表示0时区,即UTC-0,变成中国标准时间CST要+8// 3.UTC-8=GMT-8=CSTSimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");dateFormat3.setTimeZone(TimeZone.getTimeZone("Etc/GMT-8"));SimpleDateFormat dateFormat4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss'Z'");dateFormat4.setTimeZone(TimeZone.getTimeZone("UTC")); // 配置模板的时区,也是pasre函数中的源时区。SimpleDateFormat dateFormat5 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");dateFormat5.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 配置模板的时区,也是pasre函数中的源时区。try{Date date1 = dateFormat.parse(time1);System.out.println("date1:"+date1);System.out.println("tz1 默认时区:"+dateFormat.getTimeZone().toZoneId());Date date2 = new Date(); // 获取当前时区的时间System.out.println("date2:"+date2);System.out.println("tz2 默认时区:"+dateFormat.getTimeZone().toZoneId());Date date3 = dateFormat3.parse(time3);System.out.println("date3:"+date3);System.out.println("tz3:"+dateFormat3.getTimeZone().toZoneId());Date date4 = dateFormat4.parse(time4); // 将模板源时区为基准,转换成当前指定时区(TimeZone)的时间。System.out.println("date4:"+date4);System.out.println("tz4:"+dateFormat4.getTimeZone().toZoneId());Date date5 = dateFormat5.parse(time5); // Date与时区无关,只保存了一个时间戳,打印出来不一样,是因为toString函数取了不同时区System.out.println("date5:"+date5);System.out.println("tz5:"+dateFormat5.getTimeZone().toZoneId());System.out.println("timestamp 5:"+date5.getTime()/1000); // Date.getTime()会将时间所在的时区转换成UTC(GMT)时区,然后再变为时间戳}catch (ParseException pe){pe.printStackTrace();}}
}/*** 1.简单介绍:* 1.1 UTC(协调世界时)又称世界统一时间、世界标准时间、国际协调时间。** 1.2 GMT(格林尼治标准时间)一般指世界时** 1.3 CST(中央标准时间)可视为美国、澳大利亚、古巴或中国的标准时间。**** 2.CST可以为如下4个不同的时区的缩写:** 美国中部时间:Central Standard Time (USA) UT-6:00** 澳大利亚中部时间:Central Standard Time (Australia) UT+9:30** 中国标准时间:China Standard Time UT+8:00** 古巴标准时间:Cuba Standard Time UT-4:00*** 3.Date:** 尽管 Date 类打算反映协调世界时 (UTC),但无法做到如此准确,这取决于 Java 虚拟机的主机环境。** 一些计算机标准是按照格林威治标准时 (GMT) 定义的,格林威治标准时和世界时 (UT) 是相等的。** UTC 和 UT 的区别是:UTC 是基于原子时钟的,UT 是基于天体观察的,两者在实际应用中难分轩轾。**** 闰秒是根据需要引入 UTC 的,以便把 UTC 保持在 UT1 的 0.9 秒之内,UT1 是应用了某些更正的 UT 版本。**** 4.SimpleDateFormat 默认本地时区* parse() 字符串->日期对象* format() 日期对象->字符串** 5.Date 默认本地时区* getTime() 日期对象->时间戳* setTime() 时间戳->可获得日期对象*/
Linux相关命令
- 查看时区
# date -R
- 修改时区
拷贝/usr/share/zoneinfo/Asia/Shanghai到/etc/localtime
链接
全面解析Java日期时间API
更多推荐
Java时间转换笔记
发布评论