我正在从外部源将数据提取到我的程序中,它附加了一个 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 做很多事情,但我根本无法让它工作。我也一直在删除我所有的努力,否则我会将它们粘贴在这里,但我整天都在这样做以试图解决这个问题。
感谢您提供任何帮助。
编辑:
显示将 String Date 转换为 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;
}