次の形式の文字列としての日付があります"04/02/2011 20:27:05"
。私はJoda-Timeライブラリを使用していて、それをDateTime
オブジェクトに変換したいと思います。やった:
DateTime dt = new DateTime("04/02/2011 20:27:05")
しかし、私は次のようなエラーが出ます:
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
上記の日付をDateTime
オブジェクトに変換する方法
DateTimeFormat
を使用してください。
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime dt = formatter.parseDateTime(string);
私はこれが古い質問であることを知っています、しかし私はそれを加えたいと思いました、JodaTime 2.0の時点で、あなたはこれをワンライナーで行うことができます:
DateTime date = DateTime.parse("04/02/2011 20:27:05",
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"));
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05");
私はコメントから好きな答えを選び、TimeZoneを追加しました。
String dateTime = "2015-07-18T13:32:56.971-0400";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ")
.withLocale(Locale.ROOT)
.withChronology(ISOChronology.getInstanceUTC());
DateTime dt = formatter.parseDateTime(dateTime);
あなたのフォーマットは期待されるISOフォーマットではありません、あなたは試してみるべきです
DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime time = format.parseDateTime("04/02/2011 20:27:05");
DateTimeFormat
のように、 SimpleDateFormat を使うこともできます。
Date startDate = null;
Date endDate = null;
try {
if (validDateStart!= null) startDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateStart + " " + validDateStartTime);
if (validDateEnd!= null) endDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateEnd + " " + validDateEndTime);
} catch (ParseException e) {
e.printStackTrace();
}
あなたが使用しているフォーマットに適した DateTimeFormatter が必要です。作成方法についてはドキュメントを見てください。
袖口から、format = DateTimeFormat.forPattern("M/d/y H:m:s")
が必要だと思います
Java.time.LocalDateTime.parse(
"04/02/2011 20:27:05" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" )
)
現代のアプローチは、由緒ある Joda-Time プロジェクトに取って代わるJava.timeクラスを使用します。
入力にタイムゾーンまたはUTCからのオフセットのインジケータがないため、 LocalDateTime
name__ として解析します。
String input = "04/02/2011 20:27:05" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
ldt.toString():2011-02-04T20:27:05
ヒント:可能な場合は、ここで見られる形式ではなく、日付/時刻値をテキストとして交換するときに標準の ISO 8601 形式を使用してください。便利なことに、Java.timeクラスは文字列を解析/生成するときに標準フォーマットを使用します。
Java.time フレームワークは、Java 8以降に組み込まれています。これらのクラスは、 Java.util.Date
、 Calendar
name__ 、& SimpleDateFormat
name__ のような、面倒な古い レガシー date-timeクラスに代わるものです。
Joda-Time プロジェクトは現在 メンテナンスモード になっており、 Java.time クラスへの移行を推奨しています。
詳細は、 Oracleチュートリアル を参照してください。そして多くの例と説明についてはStack Overflowを検索してください。仕様は JSR 310 です。
Java.timeクラスはどこで入手できますか?
ThreeTen-Extra プロジェクトは、追加クラスでJava.timeを拡張します。このプロジェクトは、Java.timeに将来追加される可能性があることを証明するものです。 Interval
name__ 、 YearWeek
name__ 、 YearQuarter
name__ 、 more など、便利なクラスがいくつかあります。
簡単な方法:
public static DateTime transfStringToDateTime(String dateParam, Session session) throws NotesException {
DateTime dateRetour;
dateRetour = session.createDateTime(dateParam);
return dateRetour;
}
これには2つの方法があります。
DateTimeFormat
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05");
SimpleDateFormat
String dateValue = "04/02/2011 20:27:05";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); // 04/02/2011 20:27:05
Date date = sdf.parse(dateValue); // returns date object
System.out.println(date); // outputs: Fri Feb 04 20:27:05 IST 2011