【问题标题】:Parse short US date into yyyy-MM-dd, java将美国短日期解析为 yyyy-MM-dd,java
【发布时间】:2011-05-17 07:35:55
【问题描述】:

我想解析我认为等于美国短日期的日期“3/27/11”。

DateFormat df1 = new SimpleDateFormat("MM/dd/yy");
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
Date date = (Date) df1.parseObject("03/27/11");
System.out.println("New date: " + df2.format(date));

我在几个 java 教程中找到了上面的代码,但它似乎不起作用。 对于我的一些获取方式,

Exception in thread "main" java.lang.AssertionError: Default directory must be absolute/non-UNC

这是我想要达到的目标,

输入:2011 年 3 月 27 日
(2011 年 3 月 27 日也应该是有效输入)
输出:2011-03-27

提前致谢!

【问题讨论】:

  • 您使用的是什么 Java 版本? (在控制台中发出“java -version”)

标签: java date date-format simpledateformat


【解决方案1】:

当我运行它时,它会打印出来

New date: 2011-03-27

我怀疑您的问题与此无关,而是您的应用程序有一个默认目录,即 UNC 路径。即正是您的错误消息所说的内容。

尝试从您的 C: 驱动器或使用网络驱动器号的路径运行此程序。

【讨论】:

  • Netbeans 在我不知情的情况下将我的项目转移到了网络共享中。谢谢!
【解决方案2】:
public class date {


    public static void main(String args[])
    {
        String s="03/27/2011";// or 3/27/2011

        SimpleDateFormat dateFormatter=s.length()==9?new SimpleDateFormat("M/dd/yyyy"):new SimpleDateFormat("MM/dd/yyyy");
        try {
            Calendar calendar=Calendar.getInstance();
            Date date=dateFormatter.parse(s);
            calendar.setTime(date);
            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
            String str=simpleDateFormat.format(calendar.getTime());
            System.out.println(str);
        } catch (ParseException e) {
              e.printStackTrace();
        }
    }

}

    enter code here

【讨论】:

    【解决方案3】:

    你也可以这样做

    String DATE_FORMAT_NOW = "dd-MM-yyyy HH:mm:ss";
    
    //Instance of the calender class in the utill package
    Calendar cal = Calendar.getInstance(); 
    
    //A class that was used to get the date time stamp
    SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
    

    打印出你说的时间

    System.out.println(sdf.format(cal.getTime()) );
    

    干杯

    【讨论】:

      【解决方案4】:

      我收到AssertionError 也抱怨绝对路径,并通过纯粹的蛮力找到了解决方法。我想我会在这里发布我的结果,希望正在寻找这个问题的答案的人不会像我修复它那样浪费太多时间。

      问题似乎是 Oracle 版本的 Java VM 中的错误。如果您第一次在非静态对象中创建java.util.Calendar 对象(直接或间接),则会发生此错误。为了防止它,只需在您的 main() 方法中实例化一个 Calendar 对象,该方法是静态的。至少在我的情况下,此后的后续非静态实例化将正常工作。用一些简单的东西来启动 main()

      System.out.println(java.util.Calendar.getInstance().getTime());
      

      会成功的。

      希望对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多