java - 如何将 java.sql.Timestamp 格式化为 (hh :mm AM/PM)

标签 java parsing time timestamp clock

我有一个 java.sql.Timestamp,我想截断日期并以 12 小时制显示它,例如(18:42 为 6:42PM)

我试过:

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”)但我从不给它一个十进制数。

最佳答案

SimpleDateFormat做你想做的。

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

编辑:其他人发布的格式中带有“K”的版本将返回 0-11 之间的小时数。这将返回 1-12,这更有可能是您想要的。

关于java - 如何将 java.sql.Timestamp 格式化为 (hh :mm AM/PM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329544/

相关文章:

java - Spring 3.0错误: The matching wildcard is strict,但找不到元素的声明

java - 将从文件读取的数字添加到初始化为 0 的totalAmount 中,给出意外的结果

php - 建议提高页面加载速度

c++ - 使用C时间函数测量时间: are they code-reordering resistant?

java - 如何使用 ActionContext 中存在的参数、请求和 session 对象?

java - 小程序控制台日志

javascript - 更改不同提取标准的代码

javascript - @username 使用 JavaScript 的社交媒体正则表达式

c - 在 C 中将时间戳存储为二进制分数

python - Django 时间字段格式