Как мне отформатировать java.sql.Timestamp как (чч: мм AM / PM) - PullRequest
1 голос
/ 16 марта 2011

У меня есть java.sql.Timestamp, и я хотел бы обрезать дату и показать ее в 12-часовом режиме, например (18:42 как 6:42 PM)

Я пытался:

public static String formatTimestampAsTwelveHour(java.sql.Timestamp stamp){

        String stampString = stamp.toString();
        String hms  = stampString.split(" ")[1];
        String[] hmsArray = hms.split(":");
        int hours = Integer.parseInt(hmsArray[0]);
        int minutes = Integer.parseInt(hmsArray[1]);
        int seconds = Integer.parseInt(hmsArray[2]);//just in case someone wants seconds

        String suffix = "";
        if (hours > 12){
            hours = hours -12;
            suffix = "PM";
        }else if (hours == 12){
            suffix = "PM";
        }else{
            suffix = "AM";
        }
        String lessThanTen = "";
        if (minutes<10){
            lessThanTen = "0";
        }
        return String.format("%i:%s%i %s", hours, lessThanTen,minutes, suffix);

}

Я получаю (Исключение в потоке "Thread-14" java.lang.NumberFormatException: Для входной строки: "06.0"), но я никогда не даю ему десятичное число.

Ответы [ 3 ]

11 голосов
/ 16 марта 2011

SimpleDateFormat делает то, что вы хотите.

DateFormat format = new SimpleDateFormat( "h:mm a" );
String str = format.format( timestamp );

Редактировать: Версия, которую кто-то другой опубликовал с "K" в формате, будет возвращать часы между 0-11.Это вернет 1-12, что, скорее всего, будет тем, что вы хотите.

2 голосов
/ 16 марта 2011
public static String formatTimestampAsTwelveHour(java.sql.Timestamp stamp){

        java.util.Date date = new Date(stamp.getTime());
        SimpleDateFormat format = new SimpleDateFormat("your format here");
        return format.format(date);

}

Java уже предоставляет процедуры форматирования даты, и, скорее всего, они являются лучшей и более быстрой реализацией, чем все, что вы приготовите самостоятельно.

Кроме того, вам нужно создать java.util.Date из значения миллисекунды Timestamp, так как в некоторых реализациях я заметил странные вещи, происходящие с миллисекундами, когда вы пытаетесь отформатировать Timestamp через его родительский класс Date.

2 голосов
/ 16 марта 2011

Вам не нужно разбирать его самостоятельно, вы можете использовать SimpleDateFormat и "h:mm a", поскольку это подкласс java.util.Date

...