2013-04-03 3 views
-1
/Date(13863838400000-0400)/ 

Я получаю формат даты, как указано выше, как бы я отображался в MM-DD-YY. Ниже я попытался.Как выполнить синтаксический анализ даты и даты?

public static void main(String[] args) throws Exception { 
    String target = "/Date(13863838400000-0400)/"; 
    DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH); 
    Date result = df.parse(target); 
    System.out.println(result); 
} 

Я не получаю разобранную дату ...

+7

Как бы вы * * ожидать, что 'SimpleDateFormat' разобрать текст, который вы дали его? Он не выглядит удаленно, как формат, который вы предоставили. –

+0

Шаблон DateFormat должен представлять формат того, что вы хотите проанализировать, а не ожидаемый результат. –

+1

Я думаю, что дата ввода - это время в миллисекундах, за которым следует часовой пояс –

ответ

1

С данной дополнительной информации

String target = "/Date(13863838400000-0400)/"; 
long millis = Long.parseLong(target.substring(target.indexOf("(") + 1, 
     target.indexOf("-"))); 
DateFormat df = new SimpleDateFormat("MM-dd-yyyy", Locale.ENGLISH); 
System.out.println(df.format(new Date(millis))); 
+0

Это не относится к -0400. – Joe2013

1

Смотрит дата представлена ​​в миллисекундах (LONG). Поэтому использовать как ниже

 Date result = new Date(13863838400000l-0400); 
     System.out.println(result); 
+0

Как удалить/Date (13863838400000-0400) /, так что я получаю это в миллисекундах – Kevin

+1

Есть много способов, самый простой способ - подстрока .., но убедитесь, что что вы подтверждаете с источником, что это действительно миллисекунды. String target = "/ Date (13863838400000-0400) /"; \t \t Дата результата = новая Дата (Long.parseLong (target.substring (6, target.length() - 7)) - Long.parseLong (target.substring (target.length() - 6, target.length() -2))); \t \t System.out.println (результат); – Joe2013

Смежные вопросы