0

我想把这样的一个日期转换成java的Date格式,请问最好的方法是什么?

11:00:00下午, 周六, 二月 27, 2016

如果要通配中英文,比如加上下面这种,最好的方法是什么?

3:55:00AM, Sun, Feb 28, 2016

5个回答

2

已采纳

嗯,最好的方法在这里,顺带一说,没有周六这种东西,只有星期六,一定要周六的话,只能自定义了。

String sdfStr = "hh:mm:ssa, E, MMM, dd, yyyy";
// E 星期几/英文模式下简写
// EEE 星期几/英文模式下全名
// M  数字月份 1-12 (en)
// MM  数字月份 01-12 (en)
// MMM  月份简写 Jan (en)
// MMMM  月份全名 January (en)
SimpleDateFormat sdf_en = new SimpleDateFormat(sdfStr, Locale.ENGLISH); //英文
SimpleDateFormat sdf_chs = new SimpleDateFormat(sdfStr, Locale.SIMPLIFIED_CHINESE); //简体中文
System.out.println(sdf_en.format(new Date()));
System.out.println(sdf_chs.format(new Date()));

输入:

11:53:55AM, Mon, Jan, 18, 2016
11:53:55上午, 星期一, 一月, 18, 2016
0

了解下SimpleDateFormat的日期格式就可以了,如果没有对应的格式,那就需要手动处理了

0

你这种不是标准形式,应该只能人工去处理吧。可以优先找下有没有对应的工具

0

你可以使用 SimpleDateFormat 将字符串解析成 Date 对象

1 纯英文的比较好解析,比如你贴的这个

3:55:00AM, Sun, Feb 28, 2016

解析方式

SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern("K:mm:ssa, E, MMM dd, yyyy");//定义日期格式
        try {
            Date date = sdf.parse("3:55:00AM, Sun, Feb 28, 2016",
                    new ParsePosition(0));
            System.out.println(date.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
  1. 中文日期,需要先将其转化为可解析的英文字符串,比如下午替换成 pm,等等。

如果是项目中需要将日期字符串解析成Date,只需要确保生成的字符串适合解析就好了。万能的解析方式,应该是不存在的。

0

如果没有jdk现在的话,建议使用java8的DLocalDate和LocalDateTime,在转化上面容易很多。

撰写答案