日付を含む文字列を日付オブジェクトに変換する必要があります。文字列の形式は「yyyy-mm-dd HH:mm:ss.SSSSSS」であり、日付オブジェクトでも同じ形式が必要です。
たとえば、文字列「2012-07-10 14:58:00.000000」があり、結果の日付オブジェクトが同じ形式である必要があります。
以下の方法を試してみましたが、結果は期待通りではありません。
Java.util.Date temp = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss.SSSSSS").parse("2012-07-10 14:58:00.000000");
DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
Date thisDate = dateFormat.parse("2012-07-10 14:58:00.000000");
結果は「Tue Jan 10 14:58:00 EST 2012」です。どこがおかしいのか教えてください。
ありがとう、イェシュワントコタ
Java.util.Date temp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS").parse("2012-07-10 14:58:00.000000");
mm
は、必要な分ですMM
[〜#〜] code [〜#〜]
public class Test {
public static void main(String[] args) throws ParseException {
Java.util.Date temp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS")
.parse("2012-07-10 14:58:00.000000");
System.out.println(temp);
}
}
プリント:
2012年7月10日火曜日14:58:00 EDT 2012
将来の参考のために:
yyyy => 4 digit year
MM => 2 digit month (you must type MM in ALL CAPS)
dd => 2 digit "day of the month"
HH => 2-digit "hour in day" (0 to 23)
mm => 2-digit minute (you must type mm in lowercase)
ss => 2-digit seconds
SSS => milliseconds
したがって、「yyyy-MM-dd HH:mm:ss」は「2018-01-05 09:49:32」を返します
しかし、「MMM dd、yyyy hh:mm a」は「Jan 05、2018 09:49 am」を返します
https://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html のいわゆる例では、出力のみが表示されます。どのフォーマットを使用するかは教えてくれません!
日付フォーマッターを適用していない。むしろ、単に日付を解析しているだけです。この形式で出力を取得するには
yyyy-MM-dd HH:mm:ss.SSSSSS
ここでformat()メソッドを使用する必要があります。完全な例です。-完全な例です:-この形式のDateを取りますyyyy-MM-dd HH:mm:ss.SSSSSS
そして結果として、このフォーマットと同じ出力が得られますyyyy-MM-dd HH:mm:ss.SSSSSS
import Java.text.ParseException;
import Java.text.SimpleDateFormat;
import Java.util.Date;
//TODO OutPut should LIKE in this format yyyy-MM-dd HH:mm:ss.SSSSSS.
public class TestDateExample {
public static void main(String args[]) throws ParseException {
SimpleDateFormat changeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
Java.util.Date temp = changeFormat.parse("2012-07-10 14:58:00.000000");
Date thisDate = changeFormat.parse("2012-07-10 14:58:00.000000");
System.out.println(thisDate);
System.out.println("----------------------------");
System.out.println("After applying formating :");
String strDateOutput = changeFormat.format(temp);
System.out.println(strDateOutput);
}
}
LocalDateTime.parse(
"2012-07-10 14:58:00.000000".replace( " " , "T" )
)
マイクロ秒(6桁の10進数)の値を、ミリ秒の解像度(3桁の10進数)のみが可能なデータ型に絞り込もうとしています。それは不可能です。
代わりに、十分に細かい解像度のデータ型を使用してください。 Java.timeクラスはナノ秒の解像度(9桁の10進数)を使用します。
UTCからの値のみを表すデータ型(Date
)に、UTCからのオフセットまたはタイムゾーンがない値を配置しようとしています。したがって、入力ではない情報(UTCオフセット)を追加しています。
代わりに適切なデータ型を使用してください。具体的には、 Java.time.LocalDateTime
。
その他の回答とコメントでは、フォーマットパターンコードでは大文字と小文字が区別されることを正しく説明しています。したがって、MM
とmm
の効果は異なります。
最も古いバージョンのJavaにバンドルされている面倒な古い日時クラスは、レガシーであり、Java 8以降に組み込まれたJava.timeクラスに取って代わりました。
入力文字列は、ISO 8601標準形式にほぼ準拠しています。完全に準拠するには、中央のSPACEをT
に置き換えます。
Java.timeクラスは、文字列の解析/生成時にデフォルトで標準形式を使用します。したがって、フォーマットパターンを指定する必要はありません。
結果の日付オブジェクトは同じ形式である必要があります。
いいえ、日時オブジェクトには「フォーマット」がありません。日付時刻オブジェクトを単なる文字列と混同しないでください。文字列は、オブジェクトの入力および出力です。オブジェクトは、日時情報の独自の内部表現を維持しますが、その詳細は、プログラマーの呼び出しとしては無関係です。
入力には、UTCからのオフセットまたは問題のあるゾーンのインジケーターがありません。したがって、これらの概念を欠くLocalDateTime
オブジェクトとして解析します。
String input = "2012-07-10 14:58:00.000000".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;
LocalDateTime
の値を表す文字列を生成するには:
toString
を呼び出して、標準ISO 8601形式の文字列を取得します。DateTimeFormatter
を使用して、カスタム形式または自動ローカライズ形式のいずれかで文字列を生成します。これらのトピックは既に何度も取り上げられているため、スタックオーバーフローで詳細を検索してください。
ZonedDateTime
LocalDateTime
は、タイムライン上の正確なポイントを表すnotを表します。
実際の瞬間を決定するには、タイムゾーンを割り当てます。たとえば、コルカタインドの正午は、フランスのパリの正午よりもはるかに早く来ます。時間帯のない正午は、約26〜27時間の範囲の任意の時点で発生する可能性があります。
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;
Java.time フレームワークはJava 8以降に組み込まれています。これらのクラスは、面倒な古い legacy のような日時クラスに取って代わります Java.util.Date
、 Calendar
、& SimpleDateFormat
。
Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行を推奨しています。
詳細については、 Oracle Tutorial を参照してください。また、多くの例と説明についてはStack Overflowを検索してください。仕様は JSR 31 です。
Java.timeオブジェクトをデータベースと直接交換できます。 JDBC 4.2 以降に準拠する JDBCドライバー を使用します。文字列もJava.sql.*
クラスも必要ありません。
Java.timeクラスはどこで入手できますか?
ThreeTen-Extra プロジェクトは、Java.timeを追加のクラスで拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。 Interval
、 YearWeek
、 YearQuarter
、および more 。
私の仕事SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); sdf.format(new Date));