Метка времени Java - Как я могу создать Метку времени с датой 23.09.2007?

В ответе Адриена нет необходимости создавать последовательно пронумерованный массив из двух последовательно пронумерованных массивов - вот несколько вариантов, которые будут:

array_values(array_unique(array_merge($array1, $array2)));

(ответ Адриена с нумерацией ключей впоследствии)

array_keys(array_flip($array1)+array_flip($array2))

(Поместите значения в ключи и используйте оператор объединения массивов)

array_merge($array1, array_diff($array2, $array1))

(Удалите общие значения из второго массива перед объединением)

Результаты тестов (для объединение двух массивов длиной 1000 в моей системе тысячу раз):

  • Уникальный (версия Адриена): 2.862163066864 секунды
  • Значения_Уникальный: 3,12 секунды
  • Keys_Flip: 2,34 секунд
  • Merge_Diff: 2,64 секунды

Тот же тест, но с двумя очень похожими массивами (по крайней мере, 80% дублируются):

  • Уникальный ( Версия Адриена): 2,92 секунды
  • Значения_Уникация: 3,15 секунды
  • Keys_Flip: 1,84 секунды
  • Merge_Diff: 2,36 секунды

Кажется, используя массив оператор союза, чтобы сделать ctual union - самый быстрый метод. Однако обратите внимание, что array_flip безопасен, только если значения массива - это все строки или все целые числа; если вам нужно произвести объединение массива объектов, я рекомендую версию с array_merge и array_diff.

95
задан Glen 10 June 2009 в 11:22
поделиться

5 ответов

Под Timestamp , я полагаю, вы имеете в виду java.sql.Timestamp . Вы заметите, что у этого класса есть конструктор, который принимает аргумент long . Вы можете проанализировать это, используя класс DateFormat :

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("23/09/2007");
long time = date.getTime();
new Timestamp(time);
149
ответ дан 24 November 2019 в 05:43
поделиться

Что вы имеете в виду, отметка времени? Если вы имеете в виду миллисекунды с эпохи Unix:

GregorianCalendar cal = new GregorianCalendar(2007, 9 - 1, 23);
long millis = cal.getTimeInMillis();

Если вам нужен фактический объект java.sql.Timestamp:

Timestamp ts = new Timestamp(millis);
17
ответ дан 24 November 2019 в 05:43
поделиться

Согласно API конструктор, принимающий год, месяц и т. Д., Устарел. Вместо этого вы должны использовать конструктор, который принимает long. Вы можете использовать реализацию Calendar , чтобы построить желаемую дату и получить доступ к представлению времени в виде длинного числа, например, с помощью метода getTimeInMillis .

4
ответ дан 24 November 2019 в 05:43
поделиться

Что насчет этого?

java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf("2007-09-23 10:10:10.0");
115
ответ дан 24 November 2019 в 05:43
поделиться

Вы также можете сделать следующее:

// untested
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 23);// I might have the wrong Calendar constant...
cal.set(Calendar.MONTH, 8);// -1 as month is zero-based
cal.set(Calendar.YEAR, 2009);
Timestamp tstamp = new Timestamp(cal.getTimeInMillis());
5
ответ дан 24 November 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: