博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
System.currentTimeMillis()返回一个错误的值
阅读量:4112 次
发布时间:2019-05-25

本文共 2252 字,大约阅读时间需要 7 分钟。

我的问题是后台用System.currentTimeMillis()传给前端一个时间戳,但是前端解析的时间跟系统时间不一致。怀疑是时区的问题。然后把系统的时区修改为东八区就可以了。果真是前端用东八区的时区来解析的得到时间的。问题就解决了~

下面是转载的,我找到问题出现的原因。

 

在Y.Daniel Liang《Java语言程序设计》第八版的第二章中。介绍了显示系统的时间的方法:用System.currentTimeMillis()返回一个UNIX时间戳以来的毫秒数。

  由于返回的值是以毫秒为单位的,所以,要我们进行计算是几点几时几分。然而我看了一眼算法,写出的程序,返回的值是错误的。

package Demo.book;public class ShowCurrentTime {	/**	 * @显示当前时间	 * @2014.9.3	 */	public static void main(String[] args) {		// TODO Auto-generated method stub		//获得系统的时间,单位为毫秒,转换为妙		long totalMilliSeconds = System.currentTimeMillis();		long totalSeconds = totalMilliSeconds / 1000;				//求出现在的秒		long currentSecond = totalSeconds % 60;				//求出现在的分		long totalMinutes = totalSeconds / 60;		long currentMinute = totalMinutes % 60;				//求出现在的小时		long totalHour = totalMinutes / 60;		long currentHour = totalHour % 24;				//显示时间		System.out.println("总毫秒为: " + totalMilliSeconds);		System.out.println(currentHour + ":" + currentMinute + ":" + currentSecond + " GMT");	}}总毫秒为: 14097218408805:24:0 GMT

我电脑的真是时间是:13:24:0

这种原因是由时区引起的,看看下面这个会自动转换好的

import java.util.TimeZone;public class ShowCurrentTime {	/**	 * @显示当前时间	 * @2014.9.3	 */	public static void main(String[] args) {		// TODO Auto-generated method stub		//获得系统的时间,单位为毫秒,转换为妙		long totalMilliSeconds = System.currentTimeMillis();				 DateFormat dateFormatterChina = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);//格式化输出		  TimeZone timeZoneChina = TimeZone.getTimeZone("Asia/Shanghai");//获取时区 这句加上,很关键。		  dateFormatterChina.setTimeZone(timeZoneChina);//设置系统时区		long totalSeconds = totalMilliSeconds / 1000;				//求出现在的秒		long currentSecond = totalSeconds % 60;				//求出现在的分		long totalMinutes = totalSeconds / 60;		long currentMinute = totalMinutes % 60;				//求出现在的小时		long totalHour = totalMinutes / 60;		long currentHour = totalHour % 24;				//显示时间		System.out.println("总毫秒为: " + totalMilliSeconds);		System.out.println(currentHour + ":" + currentMinute + ":" + currentSecond + " GMT");						Date nowTime = new Date(System.currentTimeMillis());		System.out.println(System.currentTimeMillis());		  SimpleDateFormat sdFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");		  String retStrFormatNowDate = sdFormatter.format(nowTime);		  		  System.out.println(retStrFormatNowDate);	}}2

 

你可能感兴趣的文章
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>
laravel部署到宝塔步骤
查看>>
小程序获取access_token
查看>>
navicat远程连接mysql数据库
查看>>
tp5令牌数据无效 解决方法
查看>>
自己的网站与UCenter整合(大致流程)
查看>>
laravel 制作通用的curd 后台操作
查看>>
【小红书2017年笔试】求一个数组中平均数最大的子数组
查看>>
【java基础】父类与子类中各成员初始化顺序
查看>>
maven安装并在eclipse中配置
查看>>
三种常见字符编码简介:ASCII、Unicode和UTF-8
查看>>
【剑指offer】链表中倒数第K个节点
查看>>
http 请求中的 referer
查看>>
【携程2018校招】数组中非零元素稳定的放到数组前面,零元素放到数组后面
查看>>
【Mac终端】 root与普通用户切换(root/bash-3.2/sh-3.2/MacBook-Pro区别)
查看>>
【rabbitMQ之二】rabbitMQ之工作队列(消息ACK、消息持久化、公平分派)-go语言
查看>>
【git】git的origin和master分析
查看>>