gpt4 book ai didi

Java毫秒时间的日期转换

转载 作者:行者123 更新时间:2023-11-30 08:48:10 25 4
gpt4 key购买 nike

我正在尝试计算给定日期的偏移时间。我将日期作为字符串获取并解析它,并且我有以毫秒为单位的偏移量。例如

日期:2015-08-18 00:00:00

偏移时间:2678400000,应用于日期时,等于 2015-09-18 00:00:00,即 31 天后。

我的目标是将每个偏移量(年/月/日/小时/分钟/秒)存储在一个数组中,以便稍后使用。但是,当我使用 Calendar 类运行此计算时,由于某些原因,当使用 offsetConverter(2678400000) 调用时,我得到了额外的时间

Output: 0 years 0 months 31 days 19 hours 0 minutes 0 seconds 

这是我从这个链接 Best way to convert Milliseconds to number of years, months and days 找到并稍微修改过的代码

    public static int[] offsetConverter(long offset) {
int[] delay = new int[6];
//delay 0-3 = years/months/days/seconds

Calendar c = Calendar.getInstance();
c.setTimeInMillis(offset);
delay[0] = c.get(Calendar.YEAR) - 1970;
delay[1] = c.get(Calendar.MONTH);
delay[2] = c.get(Calendar.DAY_OF_MONTH);
delay[3] = c.get(Calendar.HOUR_OF_DAY);
delay[4] = c.get(Calendar.MINUTE);
delay[5] = c.get(Calendar.SECOND);

for (int i = 0; i< delay.length; i++)
System.out.print(delay[i] + " ");
System.out.println();
return delay;
}

如果有人看到我做错了什么或有更简单的方法来做到这一点,我将不胜感激。谢谢!

最佳答案

Date#getTime() 开始的毫秒数到达 UTC 时区,但您使用默认时区(即您的本地时区)实例化日历。这会为您的结果增加额外的时间。

要解决此问题,请使用 UTC 时区创建一个 Calendar 实例:

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));

关于Java毫秒时间的日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com