Joda Time toDate()错误的结果

帕维尔·波利(Pavel Poley):

我正在使用此代码:

date-将日期对象从DatePicker,作为字符串Thu Sep 10 00:00:00 GMT+03:00 2020

mDate = DateTime(date)
           .withHourOfDay(0)
           .withMinuteOfHour(0)
           .withSecondOfMinute(0)
           .withMillisOfSecond(0)
           .toDate()

结果mDate-Wed Sep 09 03:00:00 GMT+03:00 2020

这怎么了

Arvind Kumar Avinash:

您没有将DateTime对象java.util.Date正确转换正确的方法是从DateTime对象获取毫秒java.util.Date使用毫秒初始化

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        // Define formatter
        DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss zZ yyyy");

        // Date-time string from DatePicker
        String strDateTime = "Thu Sep 10 00:00:00 GMT+03:00 2020";

        DateTime dateTime = DateTime.parse(strDateTime, formatter);
        System.out.println(dateTime);

        // No. of milliseconds from the epoch of 1970-01-01T00:00:00Z 
        long millis = dateTime.getMillis();
        System.out.println(millis);

        Date mDate = new Date(millis);
        // Display java.util.Date object in my default time-zone (BST)
        System.out.println(mDate);

        //Display java.util.Date in a different time-zone and using custom format
        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT+3"));
        System.out.println(sdf.format(mDate));
    }
}

输出:

2020-09-09T21:00:00.000Z
1599685200000
Wed Sep 09 22:00:00 BST 2020
Thu Sep 10 00:00:00 GMT+03:00 2020

注意: java.util.Date不代表日期/时间对象。它只是表示否。距纪元的毫秒数1970-01-01T00:00:00Z它没有任何时区或时区偏移信息。在打印时,Java将打印通过应用JVM的时区获得的字符串。如果要在其他时区进行打印,则可以使用SimpleDateFormat如上所示进行打印

我建议您从过时且容易出错的java.util日期时间API SimpleDateFormat切换到现代 java.time日期时间API和相应的格式API(包java.time.format)。Trail:Date Time了解更多有关现代日期时间API的信息如果您的Android API级别仍不符合Java8,请检查如何在Android Project中使用ThreeTenABP可通过desugaring获得的Java 8+ API

下表概述了现代日期时间类在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

使用Scala的Joda Time发生类中断错误

来自分类Java

joda.time.DateTime反序列化错误

来自分类Java

解析Joda-Time部分

来自分类Java

从Joda Time到Java时间的迁移在迁移时显示出不同的结果

来自分类Java

数据截断:错误的日期时间值:org.joda.time.DateTime

来自分类Dev

Joda-Time DateTime更改时区?

来自分类Java

Joda-Time的大概时间段

来自分类Java

月末在Joda Time月份中循环播放

来自分类Java

Joda-Time,无日期的时间

来自分类Java

建议用于Joda-Time的DateMidnight

来自分类Java

JAX-WS和Joda-Time?

来自分类Java

在App层之间传递Joda Time对象

来自分类Java

将joda LocalTime转换为sql time

来自分类Dev

Joda-Time到Java 8的转换

来自分类Dev

如何用jaxb绑定joda-time

来自分类Java

将org.joda.time转换为java.time

来自分类Java

如何使用Joda-Time在Java中设置Time属性

来自分类Java

Java Joda Time中使用“ isBefore”的仅日期比较

来自分类Java

joda-time ISODateTimeFormat.dateTime()行为异常

来自分类Java

从Joda-Time DateTime获取java.util.Date

来自分类Java

我应该使用Threeten代替joda-time吗?

来自分类Java

等价于java.time中的joda.ISODateTimeFormat?

来自分类Java

结束时间24:00的Joda Time LocalTime

来自分类Java

来自joda-time DateTimeFormatter的模式字符串?

来自分类Java

Joda-Time DateFormatter如果不为零,则显示毫秒

来自分类Java

从字符串转换UTC时区(JODA TIME)

来自分类Dev

在JPA / hibernate和spring中使用joda time

来自分类Java

在Joda Time中解析日期时,时区混乱

来自分类Dev

将Joda Time添加到Android Studio

TOP 榜单

热门标签

归档