我有一個UTC格式的 DateTime字串
并且需要將此字串轉換為 DATE 物件而不進行任何格式更改。
目前,當我嘗試將其轉換為日期物件時,它會作為 GMT 格式的日期物件回傳,如下圖所示。
我有使用SimpleDateFormat的限制,因為我還必須支持API<21。
String newDateString = "2022-06-27 08:27:00 UTC";
DateFormat format = new SimpleDateFormat(Constants.EnumDateFormats.DATE_FORMAT7);//"yyyy-MM-dd HH:mm:ss 'UTC'"
format.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));
Date date = format.parse(newDateString);
System.out.println(date);//printing GMT formatted Date object but I need Date object in UTC format like 2022-06-27 08:27:00 UTC
我附上了除錯代碼影像以便更好地理解。
uj5u.com熱心網友回復:
我有一個 UTC 格式的 DateTime 字串
不,你沒有。
UTC 是通常用于計時的本初子午線。向東的時區使用比 UTC 提前若干小時-分鐘-秒的偏移量;那些在西方,在UTC之后。
UTC與文本格式無關。
需要將此字串轉換為 DATE 物件而不進行任何格式更改。
Java中有兩個Date
類。您應該指定您的意圖。
而且,這兩個類都很糟糕,都因糟糕的設計決策而存在缺陷。它們在幾年前被JSR 310中定義的現代java.time類所取代。
我有使用 SimpleDateFormat 的限制,因為我還必須支持 API<21。
不,沒有這樣的限制。最新的工具通過“API 脫糖”將大部分java.time功能帶到了早期的 Android 中。
要決議,請使用DateTimeFormatter
定義匹配的格式模式。嘗試以下,但我還沒有測驗過。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-d HH:mm:ss OOOO" ).withLocale( Locale.US ) ;
OffsetDateTime odt = OffsetDateTime.parse( input , f ) ;
提示:讓資料的發布者了解ISO 8601標準,用于格式化日期時間值的文本表示。
所有這些都已經在 Stack Overflow 上多次介紹過。發帖前請先搜索一下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/496827.html