标准世界时间的格式化

标准世界时的格式化

Java – 标准世界时(带TZ)的格式化

情景:Java 调用某某接口返回的数据中的时间格式为标准世界时间。

例如:“2021-12-16T06:07:00.0000000Z”
其中,T表示一个分隔符;Z表示了UTC时间。

拓展小知识:

UTC:协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础

可以利用SimpleDateFormat转化为时间戳

对一开始的例子进行转化:

String dateStr =2021-12-16T06:07:00.0000000Z”;

//后面需要多少个小数位就有多少个S,而T与Z作为固定字符就使用单引号包裹起来。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS’Z’");

//通过设置UTC时区,后续进行转化为时间戳的时候会自动转为本地时区。nice~
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

Date date = null;
try{
    date = simpleDateFormat.parse(dateStr);
 System.out.println(date); // date类型时间
    System.out.println(date.getTime()); // 时间戳
}catch(ParseException e){
    System.out.println("PraseeException:  "+e);
}

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sf.format(date));//指定格式的时间

JavaScript – 本地时差转化

情景:JS请求后获取的数据为标准时间(没有+8的那种),但是new Date(data)之后发现时间会自动加上那个时差??太奇怪了。

前端JS代码及输出如下:

console.log("release Time : ",releaseTime);  
// release Time :  2022-01-06T20:53:10.000+00:00

let d = new Date(releaseTime);

console.log("new Date : ",d); 
// new Date :  Fri Jan 07 2022 04:53:10 GMT+0800 (中国标准时间)

发布时间(releaseTime)后面的+00:00其实也等同于一个上面说的那个Z啦。JS的new Date会自动加上那个时差,如果不希望补上本地时差怎么办?可以利用函数getTimezoneOffset 来获取本地的时差,单位是分钟,在这里返回的是 -480 (这个负数值得揣摩)。利用时间戳 + 时差 来构造一个新的时间。

d = d.getTime()      +      d.getTimezoneOffset() * 60 * 1000; 
// 东八区的时间戳(单位:毫秒)  +   (-480分钟)*(60秒/分)*(1000毫秒/秒)

d = new Date(d); //利用新的时间戳再进行构造

这种方法 实质上只是减少了原数据的时间,所以输出的话还是会说GMT+0800,但是显示的年月日已经等同于原标准世界时的数据了,这时候再进行格式化一下就OK。

let resDate = d.getFullYear() + '-' + fillTime((d.getMonth() + 1)) + '-' + fillTime(d.getDate())
let resTime = fillTime(d.getHours()) + ':' + fillTime(d.getMinutes()) + ':' + fillTime(d.getSeconds())
releaseTime = resDate + " " + resTime; // 将 发布时间 转成了一个 格式化的时间字符串  yyyy-MM-dd HH:mm:ss

//上面用到的补全函数如下:
fillTime(s) {
	return s < 10 ? '0' + s : s
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如果皮卡会coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值