gpt4 book ai didi

java - 从数据源检索 UTC 日期时间——将其放入 Joda DateTime 对象并将其保存到 MongoDB。什么是最好的方法?

转载 作者:行者123 更新时间:2023-12-02 07:01:27 25 4
gpt4 key购买 nike

我正在将数据从外部源提取到我的程序中,并且它附加了 ISO8601 日期,但我们的要求之一是将小时/分钟/秒设置为零。这发生在我收到日期之前。所以我从数据中得到了这个。

2013-05-17T00:00:00.000Z

例如。然后,我将该值放入名为“businessDay”的 Joda DateTime 对象中。我根据这个值进行一些处理,但随后我需要将其保存到 MongoDB。

由于 Joda DateTime 对象不可序列化,我需要将 DateTime 对象放入 Date 对象并将其保存到 Mongo(并在它出现时反转)。

当我这样使用Joda时businessDay.toDate() -- 我收到一个 Java Date 对象,但它是

Sun May 19 20:00:00 EDT 2013

通常打印出的businessDay是

2013-05-20T00:00:00.000Z

它会将其转换为我本地的时区,然后将其设置为前一天。我想要的是将 DateTime 对象转换为保留值的 Date 对象。

我一直在尝试使用 DateTimeFormatter 做很多事情,但我根本无法让它工作。我还删除了我所有的努力,否则我会将它们粘贴到这里,但我一整天都在这样做,试图弄清楚这一点。

感谢您的帮助。

编辑:

显示将字符串日期转换为 Joda DateTime 对象的方法。

 private DateTime asDateTime(String value) {
// Was experiencing an issue converting DateTime to date, it would convert to localtime zone
// giving me the wrong date. I am splitting the value into its year/month/day values and using a dateFormatter
// to give me an appropriate format for the date. Timezone is based on UTC.
String[] splitValue = value.split("-");
String[] splitDay = splitValue[2].split("T");
int year = Integer.parseInt(splitValue[0]);
int month = Integer.parseInt(splitValue[1]);
int day = Integer.parseInt(splitDay[0]);
DateTime date = new DateTime(DateTimeZone.UTC).withDate(year, month, day).withTime(0, 0, 0, 0);
return date;
}

最佳答案

首先,如果您刚刚确定日期,我建议使用 LocalDate 而不是 DateTime。但是,我认为您误解了 java.util.Date 的作用:

It converts it to my local time zone, which is then making it the previous day.

不,确实不是。您的 DateTime 值正好是 2013-05-20T00:00:00.000Z。现在,java.util.Date只是自 Unix 纪元以来的毫秒数。它根本没有时区的概念。它相当于 Joda Time Instant

当您在 Date 上调用 toString() 时,将即时时间转换为您的本地时区 - 但这不是一部分对象的状态。

因此,您的 DateTimeDate 都代表 UTC 时间 5 月 20 日午夜。我不知道 MongoDB 对这个值做了什么,但只是从 Joda Time 到 java.util.Date 的转换没有为您执行任何时区转换.

关于java - 从数据源检索 UTC 日期时间——将其放入 Joda DateTime 对象并将其保存到 MongoDB。什么是最好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617060/

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