gpt4 book ai didi

java - Android UnixTime 解析不正确

转载 作者:行者123 更新时间:2023-11-29 19:57:44 27 4
gpt4 key购买 nike

我已经在 StackOverflow 中阅读了很多主题,但我不知道自己做错了什么(不使用整数并乘以 1000)。

这是我的方法:

public long toUnixTime() {
Calendar cal = Calendar.getInstance();
cal.set(year, month, day, hour, minute);
Long aux = cal.getTimeInMillis();
Long aux2 = 1000L;
return aux / aux2;
}

我用于测试的值:

  • 日: 04

  • 月份:03(从 0 开始,所以是四月)

  • 年份:2016

  • 时间: 21

  • 分钟: 00

  • 返回值:1462406419(2016 年 5 月 5 日星期四 00:00:19 GMT)

  • 预期值:1459803600(2016 年 4 月 4 日星期一 21:00:00 GMT)

这让我发疯


解决方案

public long toUnixTime() {
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day, hour, minute, 0);
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
return cal.getTimeInMillis() / 1000;
}

month-1 = 0-based,所以如果是一月,我应该使用 0。

最佳答案

首先,Calendar.getInstance(); 将返回一个 Calendar 实例,其时区设置为默认时区,很可能不是 GMT。

使用 cal.set(year, month, day, hour, minute);,您可以让日历的秒和毫秒字段保持不变(它们保留其当前值),因此如果您运行测试在 x:y:19 点(x 和 y 为任意值),将小时字段设置为 21 并将分钟字段设置为 0 后,日历的时间仍为 21:00:19。

关于java - Android UnixTime 解析不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577952/

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