Преобразование значения времени для форматирования "hh: mm Am/Pm" с помощью Android
Я получаю значение даты из базы данных, например "2013-02-27 06:06:30"
используя StringTokenizer, я получу время отдельно, как показано ниже
String startTime = "2013-02-27 06:06:30";
StringTokenizer token = new StringTokenizer(startTime);
String date1 = token.nextToken();
String time1 = token.nextToken();
и в свое время я получаю результат 06:06:30,
Можно ли повторно сохранить его в другой переменной типа String следующим образом?
String displayValue = "06:06 AM";
И если переменная time1 имеет значение
String time = 16:00:00;
тогда его следует преобразовать в:
String displayValue = "04:00 PM";
Ответы
Ответ 1
Я получил ответ просто так.
startTime = "2013-02-27 21:06:30";
StringTokenizer tk = new StringTokenizer(startTime);
String date = tk.nextToken();
String time = tk.nextToken();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt;
try {
dt = sdf.parse(time);
System.out.println("Time Display: " + sdfs.format(dt)); // <-- I got result here
} catch (ParseException e) {
e.printStackTrace();
}
Ответ 2
Попробуйте это.
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
Ответ 3
Сначала вам не нужно использовать StringTokenizer
, чтобы получить строковое время. Просто передайте startTime
следующим образом:
// Get date from string
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormatter.parse(startTime);
// Get time from date
SimpleDateFormat timeFormatter = new SimpleDateFormat("h:mm a");
String displayValue = timeFormatter.format(date);
// Done!
Ответ 4
Попробуйте это
String time = "22:35";
try {
SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
Date dateObj = sdf.parse(time);
System.out.println(dateObj);
System.out.println(new SimpleDateFormat("K:mm").format(dateObj));
} catch (final ParseException e) {
e.printStackTrace();
}
Отслеживать эту ссылку http://developer.android.com/reference/java/text/SimpleDateFormat.html
Ответ 5
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
String time1 = sdf.format(dt);
выходной 2.00 утра
Date dt = new Date(date1);
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
String time1 = sdf.format(dt);
выходной 2.00 утра
Ответ 6
Я рекомендую использовать DateFormat, например SimpleDateFormat
try {
String timeLong = "2013-02-27 06:06:30";
String timeShort = "16:06 AM";
SimpleDateFormat formatLong = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
SimpleDateFormat formatShort = new SimpleDateFormat("hh:mm aa", Locale.US);
Log.v("out", formatShort.format(formatLong.parse(timeLong)));
Log.v("out", formatShort.format(formatShort.parse(timeShort)));
} catch (ParseException e) {
e.printStackTrace();
}
Я устал сегодня и чувствую, что что-то упустил в этом коде, поэтому я могу изменить его позже, но он работает и не вызывает (прямо) устаревший класс Date.
Ответ 7
1 Предполагая, что вам нужно показать текущее время в формате 09:30 вечера. Это был бы довольно простой подход. Даже если вы не требуете этого в течение текущего времени, вы должны иметь возможность использовать нижеприведенный DateFormat для своих требований.
Calendar cal = Calendar.getInstance();
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
String formattedTime = outputFormat.format(cal.getTime());
2 Примечание. Следующий форматтер может использоваться для отображения того же времени в 24-часовом формате (21:30).
new SimpleDateFormat("HH:mm");
3 Однако, если вы хотите создать тот же формат, что и в моей первой точке, лучше всего использовать следующий код: Java обескураживает использование StringTokenizer. Вы можете прочитать об этом здесь, http://docs.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html
Надеюсь, это поможет вам, спасибо!
String startTime = "2013-02-27 21:06:30";
String[] parts = startTime.split(" ");
DateFormat outputFormat = new SimpleDateFormat("KK:mm a");
SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss");
try {
Date dt = parseFormat.parse(parts[1]);
System.out.println(outputFormat.format(dt));
} catch(ParseException exc) {
exc.printStackTrace();
}
Ответ 8
Просто используйте следующий шаблон, чтобы получить ожидаемый результат:
try {
String time = "06:06:30";
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date dt = sdf.parse(time);
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
String formatedTime = sdfs.format(dt);
Log.v("parseTime", formatedTime);
} catch (ParseException e) {
e.printStackTrace();
}
Удачного кодирования :)
Ответ 9
На Android у вас также есть DateFormat
Ответ 10
Выбранный ответ имел проблему с указанием неправильного времени. Если ваше время 12:30:00, оно показывает 12:30 AM вместо 12:30 PM. Приведенный ниже код поможет решить эту проблему.
SimpleDateFormat sdf = new SimpleDateFormat("KK:mm:ss");
SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a");
Date dt1 = null;
try {
dt1 = sdf.parse("12:00:00");
Log.i("Time in Am Pm ", sdfs.format(dt1));
} catch (ParseException e) {
e.printStackTrace();
}