在 Mirth 中与 joda 时间日期时间格式化程序一起使用的正确格式是什么?
What is the correct format to use with joda time datetime formatter in Mirth?
在其中一个 HL7 日期时间值中,我得到类似 202009010935-0400
的值 我正在尝试使用 joda time 来解析它并转换为 yyyy-MM-dd'T'HH:mm:ss
格式。使用这行代码
var instant = org.joda.time.format.DateTimeFormat.forPattern('yyyyMMddHHmm-ZZZZ').parseMillis(new String(date));
var value = org.joda.time.format.DateTimeFormat.forPattern(yyyy-MM-dd'T'HH:mm:ss).print(instant);
抛出异常
JavaException: java.lang.IllegalArgumentException: Invalid format: "202009010935-0400" is malformed at "-0400"
由于我无法控制发送的数据值,在这种情况下使用的正确格式是什么?
我试过使用 yyyyMMddHHmm-HHmm
但这只是将日期转换为 2020-09-01T04:00
您应该使用模式 yyyyMMddHHmmZ
并执行以下操作:
演示:
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) {
String dateTimeStr = "202009010935-0400";
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyyMMddHHmmZ").withOffsetParsed();
DateTime dateTime = dtf.parseDateTime(dateTimeStr);
System.out.println(dateTime);
}
}
输出:
2020-09-01T09:35:00.000-04:00
检查 DateTimeFormat
以了解有关模式的更多信息。
查看以下通知
Joda-Time is the de facto standard date and time library for Java
prior to Java SE 8. Users are now asked to migrate to java.time
(JSR-310).
使用 java.time
(JSR-301) API:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String dateTimeStr = "202009010935-0400";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuuMMddHHmmZ");
OffsetDateTime odt = OffsetDateTime.parse(dateTimeStr, dtf);
System.out.println(odt);
}
}
输出:
2020-09-01T09:35-04:00
了解现代日期时间 API
在其中一个 HL7 日期时间值中,我得到类似 202009010935-0400
的值 我正在尝试使用 joda time 来解析它并转换为 yyyy-MM-dd'T'HH:mm:ss
格式。使用这行代码
var instant = org.joda.time.format.DateTimeFormat.forPattern('yyyyMMddHHmm-ZZZZ').parseMillis(new String(date));
var value = org.joda.time.format.DateTimeFormat.forPattern(yyyy-MM-dd'T'HH:mm:ss).print(instant);
抛出异常
JavaException: java.lang.IllegalArgumentException: Invalid format: "202009010935-0400" is malformed at "-0400"
由于我无法控制发送的数据值,在这种情况下使用的正确格式是什么?
我试过使用 yyyyMMddHHmm-HHmm
但这只是将日期转换为 2020-09-01T04:00
您应该使用模式 yyyyMMddHHmmZ
并执行以下操作:
演示:
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) {
String dateTimeStr = "202009010935-0400";
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyyMMddHHmmZ").withOffsetParsed();
DateTime dateTime = dtf.parseDateTime(dateTimeStr);
System.out.println(dateTime);
}
}
输出:
2020-09-01T09:35:00.000-04:00
检查 DateTimeFormat
以了解有关模式的更多信息。
Joda-Time is the de facto standard date and time library for Java prior to Java SE 8. Users are now asked to migrate to java.time (JSR-310).
使用 java.time
(JSR-301) API:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String dateTimeStr = "202009010935-0400";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuuMMddHHmmZ");
OffsetDateTime odt = OffsetDateTime.parse(dateTimeStr, dtf);
System.out.println(odt);
}
}
输出:
2020-09-01T09:35-04:00
了解现代日期时间 API