2013-08-06 6 views
1

я получаю дату в объекте датыКак изменить формат дату установки Эталонного типа данных даты

Date s = ((java.util.Date) ((Object[]) object)[++i]); 

мне нужно установить этот формат 20130509 06:00

так что для этого у меня есть Выбирается ..

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm"); 
    String s1 = sdf.format(s); 

теперь снова моя задача состоит в том, чтобы положить обратно в дату возразить, что строки s1, пожалуйста, посоветуйте, как достичь этого

+1

з = sdf.parse (s1); –

ответ

0

Date не имеют текстовый формат - или даже часовой пояс или календарь. Это всего лишь миллисекунды с момента unix. В Date нечего устанавливать.

Необходимо провести различие между вашими фундаментальными данными и текстовым представлением этих данных - точно так же, как значение int 16 совпадает с 0x10. Я не могу думать о any время, когда я счел нужным нести текстовое представление даты вокруг самой даты. В разных местах вашей программы вы вполне можете найти, что вам нужны разные представления на ту же дату, но обычно это то же представление для всех дат в этой конкретной части программы.

Как и в сторону, вы должны рассмотреть возможность использования Joda Time вместо java.util.Date - это дает вам гораздо более широкий набор типов, чтобы рассмотреть, так что вы можете выразить то, что ваша программа на самом деле имеем дело с (только даты, только один раз, дата/время в конкретном часовом поясе и т. д.).

0

В идеале вы не должны пытаться переводить в формат String и обратно. Вы должны сохранить исходное значение и просто использовать формат String только для показа.

В противном случае вы можете использовать метод SimpleDateFormat.parse.

0

Я рекомендую использовать Joda время ... как учитывая то, что у вас есть, вы можете просто сделать

sdf.parse

@Test 
public void testDateStringConversion() throws ParseException { 
    Date date = new Date(); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm"); 
    String s1 = sdf.format(date); 

    Date date2 = sdf.parse(s1);    // seconds won't match 
    String s2 = sdf.format(date2); 
    assertEquals(s1, s2); 
} 
Смежные вопросы