Это одна из основных проблем, связанных с API-интерфейсом гаджетов рабочего стола Windows и пространством имен System.Shell .Некоторые из команд возвращают типы, которые изначально не обрабатываются JScript.К счастью, это не один из тех времен, но проблема похожа.Я доберусь до ответа, но сначала немного поболтать.
Вы заметили, что при проверке typeof lmd
в функции, "дата" - это результат.Что странного в этом то, что нет собственного типа даты JScript / ECMAScript - typeof new Date()
приведет к «объекту».Причина этого заключается в том, что многие методы System.Shell. * Сопоставляются с эквивалентными методами .net, и результат просто возвращается в JScript без каких-либо усилий по преобразованию данных в собственный тип JScript.Очень недальновидная реализация Microsoft.
При выводе lmd в отладчик вы увидите строковый результат, что-то вроде:
Ср 25 ноября11:06:30 UTC 2009
Это потому, что функция, которая ожидает строку, преобразует не строковый аргумент в строку. System.Debug.outputString () здесь не исключение.Понимая это, решение становится понятным - принудительное преобразование типа из «даты» в строку:
var lmdFields = String(lmd.split(' '));
// or
var lmdFields = (lmd+"").split(' ');
//-> ["Wed","Nov","25","11:06:30","UTC","2009"]
Если вы хотите преобразовать дату в объект JavaScript Date , вы можетепросто передайте его конструктору Date () :
var lmdFields = new Date(lmd);
System.Debug.outputString(lmdFields.toLocaleString());
//-> "25 November 2009 11:06:30"