私はこのコードスニペットを持っています:
DateFormat formatter1;
formatter1 = new SimpleDateFormat("mm/DD/yyyy");
System.out.println((Date)formatter1.parse("08/16/2011"));
これを実行すると、出力として次のようになります。
Sun Jan 16 00:10:00 IST 2011
私は期待した:
Tue Aug 16 "Whatever Time" IST 2011
私は月が期待どおりになっていないと言いたいです。間違いは何ですか?
これを試して:
new SimpleDateFormat("MM/dd/yyyy")
MM
は「月」です(mm
ではありません)dd
は「日」です(DD
ではありません)すべてが SimpleDateFormatのjavadoc にあります
FYI、形式がまだ有効な日付形式である理由は次のとおりです。
mm
は「分」ですDD
は「年の日」ですまた、Date
へのキャストは必要ありません...すでにisDate
(または爆発):
public static void main(String[] args) throws ParseException {
System.out.println(new SimpleDateFormat("MM/dd/yyyy").parse("08/16/2011"));
}
出力:
Tue Aug 16 00:00:00 EST 2011
出来上がり!
m-最小M-月
Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
以下の機能を使用してください
/**
* Format a time from a given format to given target format
*
* @param inputFormat
* @param inputTimeStamp
* @param outputFormat
* @return
* @throws ParseException
*/
private static String TimeStampConverter(final String inputFormat,
String inputTimeStamp, final String outputFormat)
throws ParseException {
return new SimpleDateFormat(outputFormat).format(new SimpleDateFormat(
inputFormat).parse(inputTimeStamp));
}
サンプルの使用法は次のとおりです。
try {
String inputTimeStamp = "08/16/2011";
final String inputFormat = "MM/dd/yyyy";
final String outputFormat = "EEE MMM dd HH:mm:ss z yyyy";
System.out.println(TimeStampConverter(inputFormat, inputTimeStamp,
outputFormat));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String newstr = "08/16/2011";
SimpleDateFormat format1 = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat format = new SimpleDateFormat("EE MMM dd hh:mm:ss z yyyy");
Calendar c = Calendar.getInstance();
c.setTime(format1.parse(newstr));
System.out.println(format.format(c.getTime()));
非常に簡単な例です。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date date = new Date();
Date date1 = new Date();
try {
System.out.println("Date1: "+date1);
System.out.println("date" + date);
date = simpleDateFormat.parse("01-01-2013");
date1 = simpleDateFormat.parse("06-15-2013");
System.out.println("Date1 is:"+date1);
System.out.println("date" + date);
} catch (Exception e) {
System.out.println(e.getMessage());
}
このコードは、前後に変換するのに役立ちます
System.out.println("Date: "+ String.valueOf(new Date()));
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String stringdate = dt.format(new Date());
System.out.println("String.valueOf(date): "+stringdate);
try {
Date date = dt.parse(stringdate);
System.out.println("parse date: "+ String.valueOf(date));
} catch (ParseException e) {
e.printStackTrace();
}
最初に指定された文字列を日付オブジェクトに変換するなど、非常に簡単に問題を解決できます。例:
Java.util.Date date1 = new Date("11/19/2015");
SimpleDateFormat formatter = new SimpleDateFormat("MMM dd yyyy HH:mma");
String format = formatter.format(date);
System.out.println(format);
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("MM/dd/uuuu");
System.out.println(LocalDate.parse("08/16/2011", dateFormatter));
出力:
2011-08-16
私は現代の答えに貢献しています。 ボヘミアンの答え は正解であり、6年前に書かれたときには良い答えでした。現在、悪名高い厄介なSimpleDateFormat
クラスは古くなっており、最新のJava日時APIであるJava.time
の方がはるかに優れています。古い日時クラスの代わりにこれを使用することをお勧めします。
スニペットを使用して08/16/2011
を解析すると、Sun Jan 16 00:08:00 CET 2011
が返されます。小文字のmm
は分単位であるため、00:08:00
(真夜中の8分前)を取得し、大文字のDD
は年中の日付であるため、1月16日を取得します。
Java.time
でもフォーマットパターン文字列は大文字と小文字が区別され、月には大文字のMM
を使用し、日には小文字のddを使用する必要がありました。
はい、Java.time
はJava6以降および古いおよび新しいAndroidデバイスの両方でうまく機能します。
org.threeten.bp
から日時クラスをインポートしてください。Java.time
の使用方法の説明。Java.time
が最初に記述されました。Java.time
to Java 6および7のバックポート(ThreeTen for JSR-310)。String localFormat = Android.text.format.DateFormat.getBestDateTimePattern(Locale.getDefault(), "EEEE MMMM d");
return new SimpleDateFormat(localFormat, Locale.getDefault()).format(localMidnight);
デバイスの言語に基づいた形式を返します。 getBestDateTimePattern()は、「指定されたロケールの指定されたスケルトンの可能な限り最適なローカライズ形式」を返すことに注意してください。
いくつかのタイプエラーを使用しました。 8/16/2011を次のパターンに設定する場合。間違っているのは、
mmはminutesを表し、MMをそのまま使用しますMonths
DDは間違ったである必要がありますddはDaysを表します
取得したい出力を達成するためにこれを試してください(Tue Aug 16 "Whatever Time" IST 2011
)、
String date = "08/16/2011"; //input date as String
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy"); // date pattern
Date myDate = simpleDateFormat.parse(date); // returns date object
System.out.println(myDate); //outputs: Tue Aug 16 00:00:00 IST 2011