有没有办法将时间从“hh:mm:ss”格式转换为“hh:mm AM / PM”格式?

时间:2016-11-23 02:02:40

标签: java android time date-format simpledateformat

我以这种格式在数据库中存储时间:"hh:mm:ss"(例如09:30:00),然后检索并尝试以这种格式向用户显示:“hh:mm AM / PM” (例如-09:30 AM)。

我正在使用以下代码进行转换:

DateFormat currentTime = new SimpleDateFormat("hh:mm a");
String startTimeInSF = currentTime.format(startTime);
String endTimeInSF = currentTime.format(endTime);

其中startTimeendTime采用hh:mm:ss格式,但上述代码产生此错误:java.lang.IllegalArgumentException: Bad class: class java.lang.String

请告诉我如何才能成功将时间从hh:mm:ss转换为hh:mm AM/PM

3 个答案:

答案 0 :(得分:3)

我认为你应该解析你的" hh:mm:ss"进入日期对象的时间,然后使用格式化程序将其格式化为" hh:mm a"。

像这样:

    DateFormat format1 = new SimpleDateFormat("hh:mm:ss");
    try {
        Date date = format1.parse("01:11:22");
        SimpleDateFormat format2 = new SimpleDateFormat("hh:mm a");
        String result = format2.format(date);
        return result;
    } catch (ParseException e) {
        e.printStackTrace();
    }

答案 1 :(得分:1)

我相信您正在寻找解析(String source)方法。 format()方法接受Date对象并输出对象的String表示形式。解析方法接受String对象并将其转换为Date对象。

要做你想做的事,你需要有一个带有hh:mm:ss的DateFormat,使用parse将数据库String转换为Date,然后使用你现有的DateFormat并使用Date对象上的格式来获取输出String以显示给您的用户。

http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html

答案 2 :(得分:0)

您需要更改类似的代码,格式化函数不会直接作用于您的异常根本原因的String对象。

DateFormat inputFormatter1 = new SimpleDateFormat"HH:mm:ss");
        Date date1 = inputFormatter1.parse("22:10:11");

        DateFormat outputFormatter1 = new SimpleDateFormat("hh:mm a");
        String output1 = outputFormatter1.format(date1); //

Out将于晚上10:10