问题 如何将joda datetime转换为String,反之亦然


有没有办法将Joda DateTime转换为String,然后从该String转换为DateTime。

DateTime d = ..;
String date = d.toString();
DateTime dateTime = DateTime.parse(date);

我的问题是上述方法是否有效或需要使用格式化程序。


9285
2017-11-20 07:23


起源



答案:


尝试这个

DateTime dt = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dtStr = fmt.print(dt);

14
2017-11-20 07:27



陷阱:此代码省略了格式的时区,因此您获得的值不一定是您开始使用的值。 - Trejkaz
问题需要两个转换(datetime - > string - > datetime),但这只提供一种方式(datetime - > string)。 - mister-f


答案:


尝试这个

DateTime dt = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dtStr = fmt.print(dt);

14
2017-11-20 07:27



陷阱:此代码省略了格式的时区,因此您获得的值不一定是您开始使用的值。 - Trejkaz
问题需要两个转换(datetime - > string - > datetime),但这只提供一种方式(datetime - > string)。 - mister-f


对于那些想要解析价值的人 toString 可以读我的答案。

如果你看了执行 DateTime 密切。该 toString 方法被覆盖 AbstractInstant

@ToString
public String toString() {
    return ISODateTimeFormat.dateTime().print(this);
}

现在,解析来自的值 toString

DateTime dt = new DateTime();
String dtStr = dt.toString();
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
DateTime newDt = fmt.parse(dtStr);

1
2018-04-26 07:37



提供的代码不正确。 - Dmitry


LocalDate localDate = new LocalDate(2010, 9, 14);
DateTimeFormatter formatter = DateTimeFormat.forPattern("MM/dd/yyyy");
String formattedDate = formatter.print(localDate);

0
2017-11-20 07:28