相关疑难解决方法(0)

从java.util.date转换为JodaTime

我想将转换java.util.DateJodaTime以开展日期之间的减法.是否有一个很好的简洁方式转换DateJodaTime

java datetime jodatime

249
推荐指数
2
解决办法
18万
查看次数

Java 处理日期和时间的不一致

我注意到 java 中日期和时间的奇怪行为。我有以下代码:

public class TestDateTime {
    public static void main(String[] args) {
        TimeZone.setDefault(TimeZone.getTimeZone("Europe/Helsinki"));

        Calendar calendar = GregorianCalendar.getInstance();

        assert(calendar.getTimeZone().equals(TimeZone.getDefault()));
        //Set 1899-12-30T23:00:00
        calendar.set(1899,11,30,23,0,0);
        calendar.set(Calendar.MILLISECOND,0);

        long timeInMillis = calendar.getTimeInMillis();
        java.util.Date calendarDateTime = new java.util.Date(timeInMillis);

        LocalDateTime localDateTime = LocalDateTime.ofInstant(ofEpochMilli(timeInMillis), ZoneId.systemDefault());
        System.out.println("Time in millis: " + timeInMillis);
        System.out.println("Date: " + calendarDateTime.toString());
        System.out.println("Local DateTime: " + localDateTime.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Time in millis: -2209086000000
Date: Sat Dec 30 23:00:00 EET 1899
Local DateTime: 1899-12-30T22:39:49
Run Code Online (Sandbox Code Playgroud)

timeInMillis 必须包含从 传递的毫秒数1970-01-01T00:00:00Z。Date 类的实例存储从 传递的毫秒数1970-01-01T00:00:00ZDate.toString()方法返回默认时区的本地日期和时间。 …

java time datetime calendar date

5
推荐指数
2
解决办法
2136
查看次数

Joda时区不同于JDK的

在我的客户端,我有这个代码:

System.out.println("Java tz: " + TimeZone.getDefault());
System.out.println("Joda tz: " + ISOChronology.getInstance());
Run Code Online (Sandbox Code Playgroud)

这两条线一个接一个地运行.我从不设置时区或user.timezone手动,只依赖于从操作系统和本地系统读取的默认值.

执行时,它们会产生:

Java tz: sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
Joda tz: ISOChronology[America/Phoenix]
Run Code Online (Sandbox Code Playgroud)

系统时区确实是凤凰城,而不是UTC.Joda怎么能正确,JDK错了?

编辑:这是一个Windows 7 x64主机,JRE是1.6.22 x64.

编辑2:不要试图重现它.它只会在某些系统上失败,而不是所有系统(就像我们的3k用户群中的几十个).我已经知道了Joda检查user.timezone然后TimeZone.getDefault().所以我正在寻找一个解释,说明我TimeZone直接打电话和Joda独自完成之间有什么不同.

java jodatime

3
推荐指数
1
解决办法
3757
查看次数

标签 统计

java ×3

datetime ×2

jodatime ×2

calendar ×1

date ×1

time ×1