java.util.Date(文字列ではない)として日付を取得:(java.util.Date)Mon Jul 13 00:00:00 IST 2020
2020-07-13T00:00 format ==>( "yyyy-MM-dd'T'HH:mm")に変換したいのですが、日付ではなく文字列です。
私は次のコードを試しました:
Date scheduleDate=details.getScheduledDate(); // This value is fetched from object passed-- [scheduleDate = (java.util.Date) Mon Jul 13 00:00:00 IST 2020]
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
sd.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
String dateFormat=sd.format(scheduleDate); //Here I get [dateFormat = (java.lang.String) "2020-07-13T00:00"]
Date date = sd.parse(dateFormat); //[date = (java.util.Date) Mon Jul 13 00:00:00 IST 2020]
文字列形式には正しい(期待どおりの)値があることがわかりましたが、java.util.dateに変換すると値が元に戻ります。
java.util.Dateはyyyy-MM-dd'T'HH:mm形式をサポートしていますか?
はいの場合、誰かが私に調査するための適切なアプローチ/方向/トピック/ライブラリを教えてくれますか?
ありがとうございました..
myJavaUtilDate
.toInstant()
.atZone( ZoneId.of( "Asia/Kolkata" ) )
.truncatedTo( ChronoUnit.MINUTES )
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
日時オブジェクトにはフォーマットがなく、テキストのみにフォーマットがあります。
java.timeクラスは使用しないでくださいjava.util.Date
。
レガシーDate
オブジェクトを最新のオブジェクトに変換しますjava.time.Instant
。
Instant instant = myJUDate.toInstant() ;
UTCから希望のタイムゾーンに調整します。
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
どうやらあなたは分の秒を気にしません。それをゼロ秒に切り捨てましょう。
ZonedDateTime zdt = zdt.truncatedTo( ChronoUnit.MINUTES ) ;
希望する形式でテキストを生成します。Javaには、フォーマット用にすでに定義されているフォーマッターがバンドルされています。
String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) ;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加