gpt4 book ai didi

java - JODA疯了?

转载 作者:行者123 更新时间:2023-12-01 19:23:18 25 4
gpt4 key购买 nike

我正在尝试使用 JODA 将数字时间戳(表示 Unix 纪元时间的 long)简单地转换为 Month Day, Year 字符串。

这是我几秒钟前刚刚运行的代码:

    long lTimestamp = 1315600867;  // Current timestamp is approx 9/9/11 3:41 PM EST

DateTime oTimestamp = new DateTime(lTimestamp);
String strMon, strDay, strYear;
strMon = oTimestamp.monthOfYear().getAsText(Locale.ENGLISH);
strDay = oTimestamp.dayOfMonth().getAsText(Locale.ENGLISH);
strYear = oTimestamp.year().getAsText(Locale.ENGLISH);

String strDate = strMon + " " + strDay + ", " + strYear;

System.out.println("Converted timestamp is : " + strDate);

输出是1970年1月16日!!!

这对任何人都有意义吗?!?!

最佳答案

您传入DateTime constructorlong应该以毫秒为单位,而不是 - 所以使用 1315600867000L 来代替,一切都很好。

文档说明:

Constructs an instance set to the milliseconds from 1970-01-01T00:00:00Z using ISOChronology in the default time zone.

如果您获得的值已经以秒为单位,则只需乘以 1000:

long timestampInSeconds = getValueFromDatabase();
long timestampInMillis = timestampInSeconds * 1000L;
DateTime dt = new DateTime(timestampInMillis);

实际上,我建议您在这种情况下使用 Instant 而不是 DateTime - 您实际上不需要考虑时区。如果您要使用DateTime,则应明确指定时区,例如

DateTime dt = new DateTime(timestampInMillis, DateTimeZone.UTC);

关于java - JODA疯了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7366671/

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