问题出现原因
项目部署到linux服务器,通过new Date()获取时间和在windows本地时间不一致,通过排查问题,发现是new Date()的问题
linux系统上通过new Date()获取的时间是世界时间(UTC时间)所以在获取时间时需要对时间进行时区的处理操作
方案一:springboot项目在主启动类中通过注解@PostConstruct解决
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
* 解决通过 new Date()获取时间不一致问题,解决发送审批时间早8八个小时问题
* @PostConstruct 是java的注解,被用来修饰一个非静态非静态的void()方法,
* 是一种JSR-250的规范,当bean创建完成的时候,会后置执行@PostConstruct修
* spring中@PostConstruct 在Bean初始化中的执行顺序
* Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
方案二:在通过new Date()获取时间后,将时间设置成东八区时间
Date date=new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 设置成东八区时间
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
问题出现原因项目部署到linux服务器,通过new Date()获取时间和在windows本地时间不一致,通过排查问题,发现是new Date()的问题linux系统上通过new Date()获取的时间是世界时间(UTC时间)所以在获取时间时需要对时间进行时区的处理操作方案一:springboot项目在主启动类中通过注解@PostConstruct解决 public static void main(String[] args) { SpringApplicati
1.
new
Date
() 得到的
时间
?和系统相差 相差8个小时
2.eclipse控制台打印的
时间
与系统相差 相差8个小时
3.log4j日志的
时间
与与系统相差 相差8个小时
上述
问题
其实是同一个
问题
。
原因:
java
获得的
时区
跟系统的
时区
不一样
解决
方法
如下:
1.在代码前加上下面这句话行了:TimeZone tz =TimeZone.getTimeZone(Asia/Shanghai);TimeZone.setDefault(tz)
2.在tomcat中修改catalina.bat文件的 set
JAVA
_OPTS在后面加上-Du
近段
时间
,由于某种原因我一直在研究js不同地区不同
时区
之间的
时间
换算。北京
时间
早上9点,在其他地区可能已经是夜晚了。
我们都知道,国内统一使用的都是北京
时间
,但在国外,不仅因
时区
不同而有
时间
差异,同一地区还存在夏令时冬令时的
时间
差异,如果程序上涉及
时间
上的计算,要千万小心了。
一、将
当前
所在地区
时间
转换为UTC
时间
二、将某一固定
时间
转换为UTC
时间
三、将UTC
时间
转换为
当前
所在地区
时间
四、两...
java
中
new
Date
();的使用 和 获取的
时间
和
当前
的
时间
不
一致
问题
Simple
Date
Format sdf =
new
Simple
Date
Format("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
Date
date
=
new
Date
();
// 这里需要转换一下
date
= sdf.parse(String.valueOf(
new
Date
()));
但是,如果你想显示不同地区的
时间
—–例如,如果你的本部在别的国家,你想查看“本国”
时间
而非当地
时间
,又该怎么办呢?要做到这一点,必须进行各种
时间
计算才能将当地
时间
转换为目的
时间
。本文将解释如何进行这些计算。 第一步: 事情的第一步是获得当地
时间
。在
Java
Script中,这无疑可以通过初始化一个Data()对象来轻松完成。 // create
Date
object for current location d =
new
Date
(); 通过调用Data()对象的getTime()
方法
,即可显示1970年1月1日后到此当时
时间
之间的毫秒数。 // convert to msec since
一、使用TimeZone 设置
时区
System.out.println("原
时间
" +
new
Date
());
TimeZone time = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(time);
System.out.println("修改后
时间
" +
new
Date
());//显示
Java
能识别的系统中所有正确...
Date
date
=
new
Date
();
System.out.println(
date
);
System.out.println(
date
.getTime());
// 输出
Tue Dec 10 18:44:24 CST 2019
1575974664352
Date
中保存的是什么?
查看源码可以知道...
import org.joda.time.
Date
Time;
import org.joda.time.
Date
TimeZone;
//
java
.util.
Date
转 过去
// 代码中的TimeZone.getTimeZone() 你可以选填
时区
Date
Time dt1 =
new
Date
Time(
new
Date
(),
Date
TimeZone.forTimeZone(TimeZone.getTimeZone(Asia/Shanghai)));
本文实例讲述了
java
script+php实现根据用户
时区
显示当地
时间
的
方法
。分享给大家供大家参考。具体如下:
在跨
时区
应用中会用到下面代码,这是以前写的一段代码。
服务器保存相关
时间
配置,保存形式为GMT
时间
,客户端需要根据客户所在
时区
做相应显示,以符合客户习惯。
1.
Java
Script代码如下:
[removed] = function() {
//TODO begin 处理登陆用户
时区
//获得登陆用户
时区
与GMT
时区
的差值
var exp =
new
Date
();
var gmtHours = -(exp.getTimezoneOffset()/
new
date
获取的
时间
是
当前
时区
的北京
时间
,和数据库指定的格林威治(GMT)国际标准
时间
相差八个
时区
,所以获取的
时间
就会相差8小时。
设置为上海
时间
serverTimezone=Asia/Shanghai
设置北京
时间
东八区
时间
serverTimezone=GMT%2B8
var d=
new
Date
();
localTime = d.getTime(),
localOffset=d.getTimezoneOffset()*60000, //获得当地
时间
偏移的毫秒数,这里可能是负数
new
Date
()正确为中国
时区
,使用TimeUtils.timeInUTC()转换日期格式后,
时间
早了晚了8小时
▌原因分析
时区
不正确,TimeUtils默认使用格林威治
时间
,晚了8小时,而我们使用的是北京
时间
,需要设置
时区
为东8区
▌
解决
方案
在
时间
格式转换前,添加以下代码
System.out.println("原
时间
" +
new
Date
());
TimeZone time = TimeZone.getTimeZone("Etc/GMT-8"); //转换为中国
时区