java.text.ParseException:Unparseable date:" 2016-02-01 10:00 pm" (抵消16)

时间:2016-02-01 06:47:35

标签: android date-format

我想将更改时间格式更改为12小时到24小时。

我有一个像这样的日期字符串

    String date = "2016-02-01";
    String time = "10:00pm";

DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mmaa");

        DateFormat outputformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date daaateee = null;
        String output = null;
        try{

            String ddd =date + " " + time;
            daaateee= df.parse(ddd);

            output = outputformat.format(daaateee);

            System.out.println(output);
        }catch(ParseException pe){
            pe.printStackTrace();
        }

我试图改变这样但是它告诉我错误:

System.err: java.text.ParseException: Unparseable date: "2016-02-01 10:00pm" (at offset 16)

此代码适用于所有设备。但是没有使用具有marshmallow操作系统的Moto g3。是否有任何理由不转换棉花糖设备?

帮我转换时间格式12H到24H。 在此先感谢

2 个答案:

答案 0 :(得分:2)

我怀疑问题可能是你没有指定语言环境 - 所以它使用你的系统语言环境,可能有不同的am / pm说明符。这是一个适用于桌面Java的示例:

import java.util.*;
import java.text.*;

class Test {
    public static void main(String[] args) throws Exception {
        String date = "2016-02-01";
        String time = "10:00pm";
        TimeZone utc = TimeZone.getTimeZone("Etc/UTC");

        DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mmaa", Locale.US);
        inputFormat.setTimeZone(utc);
        Date parsed = inputFormat.parse(date + " " +time);
        DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
        outputFormat.setTimeZone(utc);
        System.out.println(outputFormat.format(parsed));
    }
}

请注意,我还将时区指定为UTC,以避免夏令时更改出现任何问题(日期/时间组合可能不明确或根本不存在)。

如果在Android下仍然无效,请尝试使用"yyyy-MM-dd hh:mmaa"代替"yyyy-MM-dd hh:mma" - 尽管我仍然期待以前的模式上班。这绝对值得指定时区和地区。

答案 1 :(得分:1)

支持上午/下午的日期格式需要是' a'而不是' aa'

所以你基本上需要做DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mma");