Мой формат струна: M/d/гггг час: мин: сек ааПреобразование строки формата в другой формат даты
Теперь я хочу, чтобы изменить его в YYYY-MM-ДДTчч: сс мм.
Как его изменить в этом формате. Скажите, пожалуйста, соответствующее решение
Мой формат струна: M/d/гггг час: мин: сек ааПреобразование строки формата в другой формат даты
Теперь я хочу, чтобы изменить его в YYYY-MM-ДДTчч: сс мм.
Как его изменить в этом формате. Скажите, пожалуйста, соответствующее решение
Метод 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
Я уже использовал тот же метод. В любом случае спасибо за ваш ответ. – AnkitRox
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 распознает формат оригинала и разбирает его в Date. Затем второй форматирует объект даты на то, что вам нужно.
У меня нет jdk для тестирования здесь, но он должен работать.
Проверьте эти ссылки для синтаксиса формата в случае что-то не работает:
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
API-документы, к которым вы обращаетесь, относятся к Java SE, в то время как вопрос о ** Java ME **, который может не иметь «SimpleDateFormat» (J2ME CLDC 1.0 и 1.1, конечно, не имеет) – gnat
«SimpleDateFormat (« M/d/yyyy h : m: s aa "). parse()" Метод "разбора" недоступен для класса SimpleDateFormat. – AnkitRox
@AnkitRox, вы можете проверить ответ http://stackoverflow.com/questions/9892156/blackberry-how-to-convert-time-from-string-in-hhhmmss-ss-to-mmss-format. Я думаю, что 'M/d/yyyy h: m: s aa' - не обычный шаблон для использования HttpDateParser, http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api /io/http/HttpDateParser.html. – Rupak
Вам придется разобрать * источник * дату самостоятельно (с помощью 'HttpDateParser') построить' объекта Calendar' из разобранной даты и затем передайте его методу SimpleDateFormat.format() ', чтобы переформатировать его в соответствии с вашими потребностями. – mrvincenzo
На самом деле, в вашем случае может быть проще переформатировать его напрямую (с помощью методов манипуляции строками). – mrvincenzo