Разобрать короткую американскую дату в гггг-мм-дд, java - PullRequest
1 голос
/ 17 мая 2011

Я хочу разобрать дату "27.03.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

Вот то, что я хочу достичь,

ввод: 3/27/11
(27.03.11 также должен быть действительнымвход)
выход: 2011-03-27

Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 17 мая 2011

Когда я запускаю это, он печатает

New date: 2011-03-27

Я подозреваю, что ваша проблема не имеет к этому никакого отношения, а у вас есть каталог по умолчанию для вашего приложения, который является путем UNC.то есть именно то, что написано в вашем сообщении об ошибке.

Попробуйте запустить эту программу со своего диска C: или из пути, используя букву сетевого диска.

1 голос
/ 17 мая 2011

Вы также можете сделать это так

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()) );

Приветствия

1 голос
/ 17 мая 2011
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
0 голосов
/ 28 июня 2013

Я также получил жалобу AssertionError на абсолютный путь и нашел обходной путь через грубую грубую силу. Я думал, что опубликую свои результаты здесь с надеждой, что кому-то, кто ищет ответ на эту проблему, не придется тратить столько времени, сколько я исправлял.

Проблема, похоже, заключается в ошибке в версии Oracle VM VM. Если вы впервые создаете объект java.util.Calendar (прямо или косвенно) в нестатическом объекте, возникает эта ошибка. Чтобы предотвратить это, просто создайте экземпляр объекта Calendar в вашем методе main(), который является статическим. Последующие нестатические экземпляры будут работать нормально после этого, по крайней мере, в моем случае. Запуск main () с чего-то простого, например

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

сделает свое дело.

Надеюсь, это кому-нибудь поможет.

...