Как определить формат даты? - PullRequest
0 голосов
/ 21 октября 2010

У меня есть int номер 2455449, и я знаю, что это дата 09.09.2010.Как я могу определить формат даты, который используется?Мне нужно создать новую дату в этом формате.Он будет использоваться для http-запросов.Я полагаю, это Джулиан, но я не уверен.Я пытался преобразовать это число в дату, но оно не вернуло правильную дату от 09.09.2010.Возможно, я использовал неправильный SimpleDateFormat("mm/dd/yy") или Calendar.XXXX (например, Calendar.DAY_OF_YEAR)

Ответы [ 3 ]

2 голосов
/ 21 октября 2010
var now = new Date();

now.format("m/dd/yy");
// Returns, e.g., 6/09/07

// Can also be used as a standalone function
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM

// You can use one of several named masks
now.format("isoDateTime");
// 2007-06-09T17:46:21

// ...Or add your own
dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
now.format("hammerTime");
// 17:46! Can't touch this!

http://blog.stevenlevithan.com/archives/date-time-format

1 голос
/ 21 октября 2010

выглядит как уравнение с неизвестной функцией.

f(d,m,y)=D;
Где d день, m месяц, y год, а D - целая дата. И без потери общности мы можем предположить, что это отображение должно быть один к одному, т.е. каждая действительная (d, m, y) комбинация должна отображаться в уникальное положительное целое число (> = 0), и каждое положительное целое число должно представлять действительное и уникальное ( d, m, y) кортеж.
Таким образом, наиболее очевидный выбор функции f (на основе свойства дат) - это количество дней, прошедших с первого дня, что удовлетворяет нашим условиям. так что теперь у нас есть граничное условие.
f(d1,m1,y1)=0;
f(9,9,2010)= 2455449;
, где d1, m1, y1 представляет справочную дату, как эпоха в метке времени unix. Используя очевидную функцию (см. Выше), (d1, m1, y1) получается (10 5 -4713). Таким образом, используемый формат данных составляет количество дней, прошедших с 10 июня 4713 г. до н. Э. Приблизительно.
0 голосов
/ 21 октября 2010

Это число Юлианского дня , и оно подсчитывает количество дней с 1 января 4713 г. до н.э. Гринвичский полдень в юлианском калептическом календаре.метка времени Unix:

unix_time_stamp = ( JD -2440587.5) * 86400

Чтобы преобразовать метку времени Unix в JD:

JD = (unix_time_stamp / 86400) + 2440587.5

Обратите внимание, что JD отсчитывается от полудня, а не полуночи.Вот почему в конце добавления стоит 0,5.

Обновление Если вы хотите использовать его в javascript (который использует миллисекунды с начала эпохи)

function dateFromJulianDay(julian_day) {
  return new Date( (julian_day - 2440587.5) * 86400000);
}

function dateToJulianDay(date) {
  // date should be a javascript Date object
  // or a variable with milliseconds since the unix epoch 1 jan 1970
  return ( date / 86400000) + 2440587.5;
}

console.log(dateFromJulianDay(2455449));

console.log(dateToJulianDay(new Date(2010,9-1,9)));

Помните, что месяц в конструкторе Date - 0-11, поэтому я делаю -1 выше.

...