1 (изменено: Dragokas, 2014-05-23 22:28:58)

Тема: JS: Преобразовать дату модификации файла в тип Date

Всем здравствуйте !

Собственно, беру свойство DateLastModified файла через объект FSO.
И не пойму, что это за объект такой.

Свойство, по умолчанию выдает:
01.01.2014 14:54:41

А при конвертации в строку выдает:
Wed Jan 1 14:54:41 UTC+0200 2014

При этом не является типом Date, ибо такие методы как .getFullYear() не воспринимает.
С JS на Вы, поэтому просьба, помочь советом. Спасибо.

И да, хочу узнать, есть ли нативный метод преобразования в Date.
Способ парсинга не устроит, т.к. с этим я и сам управлюсь.


var oFSO   = new ActiveXObject('Scripting.FileSystemObject');

var e = oFSO.GetFile('c:\test.txt');

var Modif = e.DateLastModified;

// Выдает 01.01.2014 14:54:41
WScript.Echo(Modif);

// Выдает Wed Jan 1 14:54:41 UTC+0200 2014
WScript.Echo(e.DateLastModified + ',');

2

Re: JS: Преобразовать дату модификации файла в тип Date

Dragokas, не забывайте префикс языка в заголовке темы.

3

Re: JS: Преобразовать дату модификации файла в тип Date

Так, наверно:

var Modif = new Date(e.DateLastModified);

4

Re: JS: Преобразовать дату модификации файла в тип Date

Вот уж действительно, new Date такой формат воспринимает верно.
А я во время тестов тулил туда "01.01.2014 14:54:412".

Спасибо, YMP. Ткнули носом в очевидное.

Все же, интересно, что это за объект такой необычный.

5

Re: JS: Преобразовать дату модификации файла в тип Date

Это не объект, а тип данных VT_DATE.

VT_DATE
A 64-bit floating point number representing the number of days (not seconds) since December 31, 1899. For example, January 1, 1900, is 2.0, January 2, 1900, is 3.0, and so on). This is stored in the same representation as VT_R8.

Т.е. фактически просто дробное число, представляющее количество дней, прошедших с 31 декабря 1899 г. По дробной части, наверно, вычисляется время.

P.S. А к заголовку темы добавьте префикс языка, не злите модератора.

6

Re: JS: Преобразовать дату модификации файла в тип Date

Спасибо, разобрался.

Объясните, пожалуйста, еще момент:

var d = new Date(2014,4,2);

WScript.StdOut.WriteLine(d.toUTCString());

выдает:
Thu, 1 May 2014 21:00:00 UTC

Я понимаю, что счет месяца идет с нуля.
Но а что на счет дня - почему он на 1 меньше ?

7

Re: JS: Преобразовать дату модификации файла в тип Date

Ага. Все, сам разобрался. Это отклонение UTC.

toDateString=Fri May 2 2014
toString=Fri May 2 00:00:00 UTC+0300 2014
toUTCString=Thu, 1 May 2014 21:00:00 UTC

8

Re: JS: Преобразовать дату модификации файла в тип Date

Dragokas пишет:

отклонение UTC

Часовой пояс?

9 (изменено: Dragokas, 2014-05-24 17:52:19)

Re: JS: Преобразовать дату модификации файла в тип Date

Да, Serge Yolkin.

По-умолчанию, new Date создает дату с часовым поясом +3.00.
Уж не знаю, почему именно эта цифра. В системе у меня установлен +2.00.

toUTCString - показывает дату уже с UTC+0.00, поэтому учитывается поправка даты/времени на -3 часа.

... а нет. Таки учитывает текущую системную UTC + текущее время.
Только какие-то странности именно с моим часовым поясом.