当前位置: 首页 > 面试题库 >

在Java中的不同时区和不同的DST之间转换Unix时间戳

姜旭
2023-03-14
问题内容

解决的问题 外部设备正在计算并发送非标准的2小时轮班时间戳,这使我非常困惑,并启动了该线程。时区 不会影响自己的时间戳
,时区仅在以人类可读形式进行转换时适用。

我在UTC时区有时间戳记(距离unix纪元的秒数​​),没有DST(夏令时)。

我想要使​​用DST的“欧洲/布拉格”时区中的时间戳(距Unix纪元的秒数​​)。

我曾经以为unix时间戳不受时区限制,时区仅影响将时间戳转换为人类可读格式的过程。但这不是那样。而且,我尝试转换的次数越多(使用Calendar和TimeZone类),我就会变得越来越困惑和迷茫。

此代码无法正常工作:

Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(ts*1000);
cal.setTimeZone(TimeZone.getTimeZone("Europe/Prague"));
return cal.getTimeInMillis()/1000;

问题答案:

没有“转换”时间戳的方法,它始终是从纪元开始的毫秒数。

您可以使用DateFormat将时间戳格式化为应用了时区的格式,也可以使用日历查看应用了时区的小时,分​​钟和秒。

getTimeInMillis()返回的时间戳与您输入的时间戳相同,即从纪元开始的毫秒数:http:
//docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar。
html#getTimeInMillis%28%29



 类似资料:
  • 我以UTC long格式存储日期,并以用户时区显示。但当我试图只存储几天而没有时间时,它会误导到不同的日期。 例如:2016年5月05/06/2016 (06日的调度事件)。此日期对于所有没有时区的地区都是唯一的。如果来自GMT 5:30时区的用户试图在2016年6月5日添加事件,则ISO-8601格式为2016-05-05T16:00:00.000Z,毫秒1462464000000。 然后来自G

  • 本文向大家介绍Java对世界不同时区timezone之间时间转换的处理方法,包括了Java对世界不同时区timezone之间时间转换的处理方法的使用技巧和注意事项,需要的朋友参考一下 最近出现一个问题是这样的:我们的系统在国外打印的日志时间由于时差关系和国内不一致,看起来不方便,希望国外的日志和国内保持一致,即:需要对不同时区的时间做转换调整,统一为国内时间。 一、关于时区的一些概念 1.1 什么

  • 当将同一时间从Sri Jeyawardenepura转换回珀斯时(1/31/2005 11:30 PM),它转换到1/1/2006 3:00 AM。 时区换算为什么会有一个小时的差?

  • 主要内容:将二进制、八进制、十六进制转换为十进制,将十进制转换为二进制、八进制、十六进制,二进制和八进制、十六进制的转换,总结对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果你觉得吃力,可以暂时跳过,基本不会影响后续章节的学习,等用到的时候再来阅读。 上节我们对二进制、八进制和十六进制进行了说明,本节重点讲解不同进制之间的转换,这在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位

  • 我试图在java中实现不同类型之间的转换器:我有一个超级类foo,有2个子类: fo1和fo2,我也有2个不相关的其他类bar1和bar2,我试图实现一个转换器从bar1到fo1和bar2to fo2(与之相反)。 因为我在这里有继承,所以我想应该创建一个泛型类型的接口(将是bar1或bar2),它将定义转换所需的函数,我还想让转换器成为bar1和bar2的通用转换器,我认为它应该以某种方式使用接

  • 在jsp页面中从日期选择器中选择日期时,格式如下所示。 从印度登录时,数据选择器格式如下: 从美国登录时,datepicker格式如下所示。 我想将其转换为“dd-MMM-yyyy”两种格式。 假设将来我想从其他国家登录,即内部化它将以相同的格式输出。 现在,我们正在angularJS(jsp页面)应用程序中实现。 示例javacode如下,对印度运行良好,但对美国不起作用。 我怎样才能使它能够为