尝试使用 joda-time/java parse/formate 与时区约会
trying to parse/formate date with timezone using joda-time/java
我正在尝试使用 joda-time 将日期解析为看起来像 03-23-2015 21:16:00 GMT+05:00
但我无法实现它,但是它与 SimpleDateFormat
一起工作正常但出于某种原因我想要使用 Joda-Time (see my question on SO.)
请注意,我不想将时区硬编码为 GMT+05:00
,但我想设置用户的默认时区。
我正在尝试:
public class Consts{
public static final DateTimeFormatter DATE_FORMATTER_2 = DateTimeFormat
.forPattern("MM-dd-yyyy HH:mm:ss z");
public static final DateTimeFormatter DATE_FORMATTER_TEMP_1 = DateTimeFormat
.forPattern("MM-dd-yyyy HH:mm:ss Z");
}
然后我将这些格式化程序用作:
cDate = new LocalDateTime(DateTimeZone.getDefault());
sDate = new LocalDateTime(DateTimeZone.getDefault());
eDate = new LocalDateTime(DateTimeZone.getDefault());
if (mStartTimeTV.getText().toString().equals("Now")) {
sDate = cDate;
} else {
sDate = Consts.DATE_FORMATTER_WITHOUT_TIME_ZONE
.parseLocalDateTime(mStartTimeTV.getText().toString());
}
if (!mEndTimeTV.getText().toString().equals("")) {
eDate = Consts.DATE_FORMATTER_WITHOUT_TIME_ZONE
.parseLocalDateTime(mEndTimeTV.getText().toString());
} else {
eDate = sDate;
}
在将日期发送到服务器时,我将它们格式化为:
String s0 = Consts.DATE_FORMATTER_2.print(sDate);
String s = Consts.DATE_FORMATTER_2.withZone(
DateTimeZone.getDefault()).print(sDate);
String s1 = Consts.DATE_FORMATTER_TEMP_1.print(sDate);
但输出总是:03-24-2015 16:07:23
我也尝试过 ZZZZ
但没有成功。
LocalDateTime
没有时区,因此无需格式化。您应该改用 DateTime
,您可以使用 LocalDateTime.toDateTime(timeZone)
.
获得它
我正在尝试使用 joda-time 将日期解析为看起来像 03-23-2015 21:16:00 GMT+05:00
但我无法实现它,但是它与 SimpleDateFormat
一起工作正常但出于某种原因我想要使用 Joda-Time (see my question on SO.)
请注意,我不想将时区硬编码为 GMT+05:00
,但我想设置用户的默认时区。
我正在尝试:
public class Consts{
public static final DateTimeFormatter DATE_FORMATTER_2 = DateTimeFormat
.forPattern("MM-dd-yyyy HH:mm:ss z");
public static final DateTimeFormatter DATE_FORMATTER_TEMP_1 = DateTimeFormat
.forPattern("MM-dd-yyyy HH:mm:ss Z");
}
然后我将这些格式化程序用作:
cDate = new LocalDateTime(DateTimeZone.getDefault());
sDate = new LocalDateTime(DateTimeZone.getDefault());
eDate = new LocalDateTime(DateTimeZone.getDefault());
if (mStartTimeTV.getText().toString().equals("Now")) {
sDate = cDate;
} else {
sDate = Consts.DATE_FORMATTER_WITHOUT_TIME_ZONE
.parseLocalDateTime(mStartTimeTV.getText().toString());
}
if (!mEndTimeTV.getText().toString().equals("")) {
eDate = Consts.DATE_FORMATTER_WITHOUT_TIME_ZONE
.parseLocalDateTime(mEndTimeTV.getText().toString());
} else {
eDate = sDate;
}
在将日期发送到服务器时,我将它们格式化为:
String s0 = Consts.DATE_FORMATTER_2.print(sDate);
String s = Consts.DATE_FORMATTER_2.withZone(
DateTimeZone.getDefault()).print(sDate);
String s1 = Consts.DATE_FORMATTER_TEMP_1.print(sDate);
但输出总是:03-24-2015 16:07:23
我也尝试过 ZZZZ
但没有成功。
LocalDateTime
没有时区,因此无需格式化。您应该改用 DateTime
,您可以使用 LocalDateTime.toDateTime(timeZone)
.