java - 从字符串转换为日期后如何获得正确的日期

标签 java date simpledateformat

我正在将日期从字符串类型日期转换为日期类型日期,使用 SimpleDateFormat 但 我得到的结果日期正在改变。任何人都可以告诉我为什么它会改变 另外我应该使用什么来从字符串中获取正确的日期类型日期,而不是我到达这里时更改的日期。

    Date d = null;
    String startTime="2012-03-17 16:00:00 PM";
    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
    try {
          d=  sdf.parse(startTime);
         } catch (ParseException e) {}

System.out.println("DD="+d) //printing Sun Mar 18 04:00:00 IST 2012 ? why this 
   //Date enterd was 17 Mar 2012

最佳答案

如果将 24 小时时钟和 AM/PM 标记结合起来,就会产生歧义。在您的情况下,您应该使用“HH”(大写 H)来解析 0-23 范围内的小时字段并忽略 AM/PM 后缀,或者使用带有适当 AM/PM 后缀的 12 小时时钟(在您的情况下为“04” :00:00 PM”)。

关于java - 从字符串转换为日期后如何获得正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14443625/

相关文章:

java - 如何声明不同类型的HashMap?

java - 使scrollRectToVisible与使用GroupLayout布局的面板一起使用

javascript - moment.js 被添加到数组中

java - 如何提高包裹在 ThreadLocal 中的 SimpleDateFormat 的性能?

java - 在指定的不活动时间后自动注销用户

java - 我的公司如何将 jar 放入 Maven 存储库中,以便 Maven 项目可以从内部访问它

javascript - 如何验证我的预订日期?

javascript - 在 JavaScript 中创建时间戳

java - 获取另一个时区的 SimpleDateFormat 日期对象

java - SimpleDateFormat 在 Android 中的行为很奇怪