【问题标题】:Java SimpleDateFormat -- input and output is differentJava SimpleDateFormat——输入和输出不同
【发布时间】:2012-04-23 02:59:15
【问题描述】:

我得到日期字符串--“2012-04-19 20:51:06”。然后我通过 SimpleDateFormat 得到毫秒时间。

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date d=sdf.parse("2012-04-19 20:51:06");
    long milliTime=d.getTime()

那么milliTime就是1334839866000L

但是,当我将 milliTime 转换为日期格式字符串时。结果是“2012-04-19 08:51:06”

    long time = 1334839866000L;
    Date date = new Date(time);

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String t = sdf.format(date);

有什么问题?

【问题讨论】:

    标签: java date simpledateformat


    【解决方案1】:

    尝试对小时部分使用 HH 而不是 hh。

    【讨论】:

    • +1。区别在于 24 小时制 (HH) 与上午/下午 (hh)。
    • 但是当输入错误的输入 (20) 时,一种格式 (hh?) 不应该引发异常吗?
    • @user unknown:我没有做任何测试,但是Java Doc说:默认情况下,解析是宽松的:如果输入不是这个对象的格式方法使用的形式但仍然可以被解析为日期,则解析成功。客户可以通过调用 setLenient(false) 来坚持严格遵守格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2018-06-03
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多