[英]Why java date is not parsable?
我正在使用oracle MAF開發移動應用程序。 Oracle MAF提供了日期組件,如果我選擇一個日期,則輸出為: 2015-06-16T04:35:00.000Z
用於選定的日期Jun 16, 2015 10:05 AM
2015-06-16T04:35:00.000Z
Jun 16, 2015 10:05 AM
。
我正在嘗試使用.ical(ICalendar日期格式)將此格式轉換為“印度標准時間”,對於所選日期Jun 16, 2015 10:05 AM
應該類似於20150613T100500
。 我正在使用以下代碼:
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
isoFormat.setTimeZone(TimeZone.getTimeZone("IST"));
String start_date_time = isoFormat.parse("20150616T043500000Z").toString();
但是它返回日期時間為:
Tue Jun 16 04:35:00 GMT+5:30 2015
並且應該像:
20150616T100500
您需要將UTC 2015-06-16T04:35:00.000Z
的值解析為java.util.Date
SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
from.setTimeZone(TimeZone.getTimeZone("UTC"));
Date start_date_time = from.parse("2015-06-16T04:35:00.000Z");
這給了我們一個Tue Jun 16 14:35:00 EST 2015
的java.util.Date
(對我來說)。
然后,您需要在IST中對其進行格式化
SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
outFormat.setTimeZone(TimeZone.getTimeZone("IST"));
String formatted = outFormat.format(start_date_time);
System.out.println(formatted);
哪個輸出20150616T100500
只是因為這是一個好習慣...
// No Time Zone
String from = "2015-06-16T04:35:00.000Z";
LocalDateTime ldt = LocalDateTime.parse(from, DateTimeFormatter.ISO_ZONED_DATE_TIME);
// Convert it to UTC
ZonedDateTime zdtUTC = ZonedDateTime.of(ldt, ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("UTC"));
// Convert it to IST
ZonedDateTime zdtITC = zdtUTC.withZoneSameInstant(ZoneId.of("Indian/Cocos"));
String timestamp = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss").format(zdtITC);
System.out.println(timestamp);
nb:如果我沒有將值解析為LocalDateTime
,然后將其轉換為UTC
,我已經有一個小時了,但是我願意了解更好的方法
供應格式應為"yyyy-MM-dd'T'HH:mm:ss"
public static void main(String[] args) {
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
isoFormat.setTimeZone(TimeZone.getTimeZone("IST"));
try {
Date start_date_time = isoFormat.parse("2015-06-16T04:35:00.000Z");
System.out.println(start_date_time);
SimpleDateFormat output = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
String formattedTime = output.format(start_date_time);
System.out.println(formattedTime);
} catch (ParseException e) {
e.printStackTrace();
}
}
產量
Tue Jun 16 04:35:00 IST 2015
20150616T043500
格式的一些補充,以及日期字符串中的正確TZ:
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz");
isoFormat.setTimeZone(TimeZone.getTimeZone("IST"));
String start_date_time = isoFormat.parse("2015-06-16T04:35:00.000CEST").toString();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.