在 JAVA 中转换为特定日期格式时出现问题
Issue in converting to specific Date format in JAVA
我收到以下字符串形式的日期:"Wed Feb 06 2019 16:07:03 PM" 我需要将其转换为“02/06/2019 at 04:17 PM ET”
请指教
以下是您的问题的可能解决方案:首先,获取 String 并将其解析为 Date 对象。然后使用您需要的新格式格式化 Date 对象。这将为您提供:02/06/2019 04:07 PM
。 ET
应该附加在末尾,它不能通过格式化接收(尽管您可以接收 GMT、PST 等时区 - 请参阅 link 获取 SimpleDateFormat
)。您可以使用 SimpleDateFormat
here.
找到有关日期格式的更多信息
public static void main(String [] args) throws ParseException {
//Take string and create appropriate format
String string = "Wed Feb 06 2019 16:07:03 PM";
DateFormat format = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss");
Date date = format.parse(string);
//Create appropriate new format
SimpleDateFormat newFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
//SimpleDateFormat("MM/dd/yyyy hh:mm a z"); 02/06/2019 04:07 PM GMT
//Format the date object
String newDate = newFormat.format(date);
System.out.println(newDate + " ET"); // 02/06/2019 04:07 PM ET
}
我看到您想在输出中使用 "at" 词,不确定这对您有多重要。但如果是,一种可能的解决方案是简单地采用新字符串,按空格分割并根据需要输出:
String newDate = newFormat.format(date);
String[] split = newDate.split(" ");
System.out.println(split[0] + " at " + split[1] + " " + split[2] + " ET"); // 02/06/2019 at 04:07 PM ET
添加 Ole V.V。此处的格式化评论作为替代:
DateTimeFormatter receivedFormatter = DateTimeFormatter
.ofPattern("EEE MMM dd uuuu H:mm:ss a", Locale.ENGLISH);
DateTimeFormatter desiredFormatter = DateTimeFormatter
.ofPattern("MM/dd/uuuu 'at' hh:mm a v", Locale.ENGLISH);
ZonedDateTime dateTimeEastern = LocalDateTime
.parse("Wed Feb 06 2019 16:07:03 PM", receivedFormatter)
.atZone(ZoneId.of("America/New_York"));
System.out.println(dateTimeEastern.format(desiredFormatter));
02/06/2019 at 04:07 PM ET
此代码使用的是现代java.time API; Tutorial here.
我收到以下字符串形式的日期:"Wed Feb 06 2019 16:07:03 PM" 我需要将其转换为“02/06/2019 at 04:17 PM ET”
请指教
以下是您的问题的可能解决方案:首先,获取 String 并将其解析为 Date 对象。然后使用您需要的新格式格式化 Date 对象。这将为您提供:02/06/2019 04:07 PM
。 ET
应该附加在末尾,它不能通过格式化接收(尽管您可以接收 GMT、PST 等时区 - 请参阅 link 获取 SimpleDateFormat
)。您可以使用 SimpleDateFormat
here.
public static void main(String [] args) throws ParseException {
//Take string and create appropriate format
String string = "Wed Feb 06 2019 16:07:03 PM";
DateFormat format = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss");
Date date = format.parse(string);
//Create appropriate new format
SimpleDateFormat newFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
//SimpleDateFormat("MM/dd/yyyy hh:mm a z"); 02/06/2019 04:07 PM GMT
//Format the date object
String newDate = newFormat.format(date);
System.out.println(newDate + " ET"); // 02/06/2019 04:07 PM ET
}
我看到您想在输出中使用 "at" 词,不确定这对您有多重要。但如果是,一种可能的解决方案是简单地采用新字符串,按空格分割并根据需要输出:
String newDate = newFormat.format(date);
String[] split = newDate.split(" ");
System.out.println(split[0] + " at " + split[1] + " " + split[2] + " ET"); // 02/06/2019 at 04:07 PM ET
添加 Ole V.V。此处的格式化评论作为替代:
DateTimeFormatter receivedFormatter = DateTimeFormatter
.ofPattern("EEE MMM dd uuuu H:mm:ss a", Locale.ENGLISH);
DateTimeFormatter desiredFormatter = DateTimeFormatter
.ofPattern("MM/dd/uuuu 'at' hh:mm a v", Locale.ENGLISH);
ZonedDateTime dateTimeEastern = LocalDateTime
.parse("Wed Feb 06 2019 16:07:03 PM", receivedFormatter)
.atZone(ZoneId.of("America/New_York"));
System.out.println(dateTimeEastern.format(desiredFormatter));
02/06/2019 at 04:07 PM ET
此代码使用的是现代java.time API; Tutorial here.