私の文字列の形式は次のとおりです。M/d/ yyyy h:m:s aa
ここで、yyyy-MM-ddTHH:mm:ss形式に変更します。
この形式で変更するにはどうすればよいですか。適切な解決策を教えてください
私の文字列の形式は次のとおりです。M/d/ yyyy h:m:s aa
ここで、yyyy-MM-ddTHH:mm:ss形式に変更します。
この形式で変更するにはどうすればよいですか。適切な解決策を教えてください
メソッドgetConvertedDate(String)
は、変換のためにプレーンテキストの解析を行います。
private String getConvertedDate(String inputDate) {
// extract and adjust Month
int index = inputDate.indexOf('/');
String month = inputDate.substring(0, index);
if (month.length() < 2) {
month = "0" + month;
}
// extract and adjust Day
inputDate = inputDate.substring(index + 1);
index = inputDate.indexOf('/');
String day = inputDate.substring(0, index);
if (day.length() < 2) {
day = "0" + day;
}
// extract Year
inputDate = inputDate.substring(index + 1);
index = inputDate.indexOf(' ');
String year = inputDate.substring(0, index);
// extract Hour
inputDate = inputDate.substring(index + 1);
index = inputDate.indexOf(':');
String hour = inputDate.substring(0, index);
// extract and adjust Minute
inputDate = inputDate.substring(index + 1);
index = inputDate.indexOf(':');
String minute = inputDate.substring(0, index);
if (minute.length() < 2) {
minute = "0" + minute;
}
// extract and adjust Second
inputDate = inputDate.substring(index + 1);
index = inputDate.indexOf(' ');
String second = inputDate.substring(0, index);
if (second.length() < 2) {
second = "0" + second;
}
// extract AM/PM marker
// adjust hour, +12 for PM
inputDate = inputDate.substring(index + 1);
String am_pm_marker = inputDate.substring(0);
if (am_pm_marker.equalsIgnoreCase("pm")) {
int hourValue = 0;
try {
hourValue = Integer.parseInt(hour);
} catch (Exception e) {
}
hourValue += 12;
hour = "" + hourValue;
if (hour.length() < 2) {
hour = "0" + hour;
}
} else {
if (hour.length() < 2) {
hour = "0" + hour;
}
}
String outputDate = year + "-" + month + "-" + day;
outputDate += "T" + hour + ":" + minute + ":" + second;
return outputDate;
}
サンプルの入力と出力:
String input = "04/01/2012 9:55:47 pm";
System.out.println("Output: " + getConvertedDate(input));
// Output: 2012-04-01T21:55:47
Date date = (Date)new SimpleDateFormat("M/d/yyyy h:m:s aa").parse(your_string_date);
String finalFormat = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss").format(date)
基本的に、最初のSimpleDateFormatは元の形式を認識し、それを日付に解析します。次に、2番目のオブジェクトは日付オブジェクトを必要なものにフォーマットします。
ここでテストするjdkはありませんが、動作するはずです。
何かが機能しない場合は、次のリンクでフォーマット構文を確認してください:http:
//docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html