2013-04-30 2 views
0

Я читаю значения даты из файла, в котором я читаю его как строковый объект.Преобразование строки в объект Date

Значения даты изменяется во многих формате, например, пришить ниже:

01-Mar-2012 
01/12/2012 
01-12-2012 
01.12.2012 
01.Mar.2012 
07/01/2008 12:00:00 
07/01/2008 12:00:00 AM 

Что когда-либо формат я хочу объект даты в формате дд/мм/гггг.

Существует так много комбинаций.

SimpleDateFormat ожидает, что я предоставил шаблон для его форматирования.

Есть ли способ угадать шаблон или создать объект даты из данной строки?

+1

Покажите нам свой подход. –

+0

Вы не _guess pattern_. Прочитайте документацию или примеры на этом сайте. –

+0

http://stackoverflow.com/questions/7579227/how-to-get-the-given-date-string-formatpattern-in-java –

ответ

2

как узнать, если 12-6-2012 - 6 декабря или 12 июня ?!

Что вы можете сделать, это определить массив со всеми возможными шаблонами.

затем попытаться разобрать дату для каждой записи массива (если он бросает exceptionen попробовать nexct рисунок и так далее)

я знаю, что это довольно некрасиво попытка, но это работает!

+0

yup это именно то, что у меня в голове, думал, что будет еще один способ. у вас нет простого метода преобразования строки на дату без шаблона какой-либо конкретной причины? – Wills

+1

не так далеко, насколько я знаю. Я описал основную проблему в первой строке моего ответа. –

+0

, когда «угадывая» шаблон, вы должны выбрать приоритет. и это то, что вы делаете с массивом –

0

Какой бы быть формат, я хочу объект даты в формате dd/mm/yyyy.

java.util.Date объект не имеет формат - единственная информация, содержащаяся в нем мгновенного времени (в частности, количество миллисекунд, прошедших с 01.01.1970, 00:00:00 GMT).

Таким образом, вы не можете иметь «объект даты в формате dd/mm/yyyy». Date объекты не имеют формата, точно так же, как номера не имеют встроенного формата.

Если вы хотите отобразить дату в формате dd/mm/yyyy, вам необходимо сначала преобразовать ее в строку с использованием объекта SimpleDateFormat; вы указываете формат на объекте SimpleDateFormat (не на самом объекте Date).

// NOTE: use MM instead of mm; MM = months, mm = minutes 
DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 

Date now = new Date(); 

// Display the date in the format dd/MM/yyyy 
System.out.println(df.format(now)); 
Смежные вопросы