【问题标题】:I am trying to SimpleDateFormat date in java我正在尝试在 java 中使用 SimpleDateFormat 日期
【发布时间】:2012-06-13 01:15:31
【问题描述】:

我试图通过解析日期来格式化它,然后格式化它,但它不起作用。

显示解析异常

public java.util.Date convertFormat(String DateTimeForm) 
                    throws ParseException {
 DateTimeForm="2012-06-01 10:00 PM";
 DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa");
 java.util.Date FCDate = (java.util.Date) formatter.parse(DateTimeForm);

 return (java.util.Date) FCDate;

}

【问题讨论】:

  • 也许显示错误日志会有所帮助
  • 并提供您的语言环境。
  • 除了作为一种方法毫无意义(因为您完全忽略了传入的值)之外,您显示的代码没有任何问题。它按照您想要的方式(我认为)编译和运行。你能发布你的语言环境吗?
  • 试试这个:new SimpleDateFormat("yyyy-MM-dd hh:mm aaa",java.util.Locale.US);
  • OP 的操作系统可能与英语不同。

标签: java time simpledateformat


【解决方案1】:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa");
try {
    Date date = formatter.parse("2012-06-01 10:00 PM");
    System.out.println(date.toString());
    } catch (ParseException e) {
        e.printStackTrace();
    }

没有改变任何东西,但它仍然有效。

Fri Jun 01 22:00:00 CDT 2012

【讨论】:

  • 谢谢它正在工作,但我不知道为什么当我抛出异常时它不起作用,但当我尝试捕获它时它正在工作。是什么原因
  • @VICKY-TSC 查看 Java DateFormat#parse 方法文档,它说会引发 ParseException,而 SimpleDateFormat#parseDateFormat 的子类,继承了 parse 方法。跨度>
【解决方案2】:

这在我的机器上运行良好。我没有改变任何重要的东西。

    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa"); 
    Date date = null;
    try {
        date = formatter.parse("2012-06-01 10:00 PM");
    } catch (ParseException ex) {
        // Intentionally empty. Failed parse causes date == null. 
    }
    System.out.print(date);

打印

    Fri Jun 01 22:00:00 EDT 2012

Java 文档说数字都是独立于语言环境的,但不是 AM/PM。例如,如果您在格式化程序构造中指定 Locale.JAPAN,则代码将失败。指定 Local.US 以保证 AM/PM 始终有效。

【讨论】:

  • 我添加了一条评论来说明为什么在这种情况下这样做是合理的。
  • 是的,然后你打印出来。
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
相关资源
最近更新 更多