文字列「11/15/2013 08:00:00
」があります。「」にフォーマット設定します。11/15/2013
正しいDateTimeFormatter
パターンは何ですか?
私は多くのグーグルを試してみましたが、それでも正しいパターンを見つけることができません。
編集:JavaのSimpleDateFormatではなく、Joda-Timeを 探していDateTimeFormatter
ます。
文字列「11/15/2013 08:00:00
」があります。「」にフォーマット設定します。11/15/2013
正しいDateTimeFormatter
パターンは何ですか?
私は多くのグーグルを試してみましたが、それでも正しいパターンを見つけることができません。
編集:JavaのSimpleDateFormatではなく、Joda-Timeを 探していDateTimeFormatter
ます。
回答:
作成しDateTimeFormatter
使用してDateTimeFormat.forPattern(String)
Joda時間を使用すると、次のようになります。
String dateTime = "11/15/2013 08:00:00";
// Format for input
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
// Parsing the date
DateTime jodatime = dtf.parseDateTime(dateTime);
// Format for output
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("MM/dd/yyyy");
// Printing the date
System.out.println(dtfOut.print(jodatime));
Java 8では、新しい日付と時刻のライブラリが導入され、日付と時刻の扱いが簡単になりました。標準のJavaバージョン8以降を使用する場合は、DateTimeFormatterを使用します。にはタイムゾーンがないためString
、java.time.LocalDateTimeまたはLocalDateです。それ以外の場合は、タイムゾーン変数ZonedDateTimeおよびZonedDateを使用できます。
// Format for input
DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
// Parsing the date
LocalDate date = LocalDate.parse(dateTime, inputFormat);
// Format for output
DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy");
// Printing the date
System.out.println(date.format(outputFormat));
Java 8より前は、SimpleDateFormatとjava.util.Dateを使用していました。
String dateTime = "11/15/2013 08:00:00";
// Format for input
SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
// Parsing the date
Date date7 = dateParser.parse(dateTime);
// Format for output
SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");
// Printing the date
System.out.println(dateFormatter.format(date7));
SimpleDateFormat
。APIドキュメントを読みます。
他の回答は完全に受け入れ可能ですが、ここに追加します。JodaTimeには、DateTimeFormatに事前に組み込まれたパーサーがあります。
dateTime.toString(DateTimeFormat.longDate());
これは、フォーマットとともに出力されるほとんどのオプションです。
shortDate: 11/3/16
shortDateTime: 11/3/16 4:25 AM
mediumDate: Nov 3, 2016
mediumDateTime: Nov 3, 2016 4:25:35 AM
longDate: November 3, 2016
longDateTime: November 3, 2016 4:25:35 AM MDT
fullDate: Thursday, November 3, 2016
fullDateTime: Thursday, November 3, 2016 4:25:35 AM Mountain Daylight Time
DateTime date = DateTime.now().withTimeAtStartOfDay();
date.toString("HH:mm:ss")
DateTime.now().toString("HH:mm:ss")
JodaTimeを使用している場合は、これでうまくいくと思います。
String strDateTime = "11/15/2013 08:00:00";
DateTime dateTime = DateTime.parse(strDateTime);
DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/YYYY");
String strDateOnly = fmt.print(dateTime);
D
:今年の日ですが、私の「ドキュメントへのリンクは、」古くなっていない私がリンクされドキュメントが古くなっています。自分のためにドキュメントにリンクするのではなく、コードを取得したページにリンクしていました。これはたまたま古いドキュメントです。
私は非常に馬鹿ですが、働くオプションがあります。文字列fullDate = "11/15/2013 08:00:00"がある場合。
String finalDate = fullDate.split(" ")[0];
それは簡単かつ迅速に動作するはずです。:)
更新しました:
できること:定数を作成する:
private static final DateTimeFormatter DATE_FORMATTER_YYYY_MM_DD =
DateTimeFormat.forPattern("yyyy-MM-dd"); // or whatever pattern that you need.
このDateTimeFormatは次のものからインポートしています:(それに注意してください)
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter;
次で日付を解析します:
DateTime.parse(dateTimeScheduled.toString(), DATE_FORMATTER_YYYY_MM_DD);
以前:
DateTime.parse( "201711201515"、DateTimeFormat.forPattern( "yyyyMMddHHmm"))。toString( "yyyyMMdd");
日時が必要な場合:
DateTime.parse("201711201515", DateTimeFormat.forPattern("yyyyMMddHHmm")).withTimeAtStartOfDay();
これは機能します
String x = "22/06/2012";
String y = "25/10/2014";
String datestart = x;
String datestop = y;
//DateTimeFormatter format = DateTimeFormat.forPattern("dd/mm/yyyy");
SimpleDateFormat format = new SimpleDateFormat("dd/mm/yyyy");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(datestart);
d2 = format.parse(datestop);
DateTime dt1 = new DateTime(d1);
DateTime dt2 = new DateTime(d2);
//Period
period = new Period (dt1,dt2);
//calculate days
int days = Days.daysBetween(dt1, dt2).getDays();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}