ГлавнаяЗагрузитьКупитьМодулиШаблоныСтатьиПоддержкаНовости/ПрессаБлог

Работа с датой в JScript

написано в рубрике: Справочник — Outlook Blogger @ Чт 21.09.2006 18:01

Работа с датой в JScriptБытует мнение, что с датой работать в VBScript удобнее, чем в JScript. Надеюсь, что это так и останется чьим-то мнением, потому как мы сейчас досконально разберемся что можно вытворять со временем и датой на JScript.

 

Для начала изучим список всех свойств и методов объекта Date, который можно найти здесь:
методы и свойства объекта Date, Объект Date в JScript.

Создание объекта даты в JScript

Объект даты можно создать и инициализировать несколькими способами. Способ первый - задать в конструкторе:

var d = new Date("Wed, 12 Apr 2006 05:06:13 +0400");

Заметьте, что дату нужно устанавливать в формате UTC (это все одно и то же: coordinated universal time, universal time, world time, Гринвичское среднее время - GMT), в соответствии с текущим часовым поясом - за это отвечают символы “+0400″ в конце строки. Например для Москвы это будет +4 часа летом и +3 часа зимой.

Существуют следующие правила перевода даты из текстовой строки:

  • Для краткого формата даты допускается использование разделителей “/” или “-”, но порядок элементов должен быть строго “месяц/день/год”, например “7/20/96″.
  • Для полного формата даты порядок указания элементов может быть произвольным. Если используется два знака для обозначения года, то число должно быть меньше 70 для указания 21-го века. Например “July 10 1995″.
  • Любой текст в круглых скобках рассматривается как комментарии. Комментарии могут быть вложенными, например: “July 10 1995 (this (1234) is a comment)”.
  • Запятые и пробелы рассматриваются как разделители, могут повторяться.
  • Месяца и дни недели должны иметь два и больше знаков. Если в двузначном написании элементы становятся идентичными, то используется последнее значение, например “Ju” это Июль, а не Июнь.
  • Если в полном формате даты указан неверный день недели, то он игнорируется.
  • JScript обрабатывает все стандартные временные зоны, включая UTC и GMT.
  • Значения для часов, минут и секунд могут быть пропущены, например “10:”, “10:11″, и “10:11:12″.
  • Если время указано в 24-часовом формате, то указание полудня считается ошибкой, например “23:15 PM” - ошибка.
  • Строка, содержащая неправильную дату - ошибочна. Например, строка содержащая два года или два месяца.

В качестве параметра конструктор может принимать дату в формате Variant с типом VT_DATE. Таким образом можно легко получать и манипулировать датой из других приложений. К сожалению конструктор, как и функция parse(), не умеет работать с локализованными датами и не понимает русские названия месяцев.

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

 var d = new Date(); // Текущая дата и время
 d.setDate(12);
 d.setMonth(3); // Месяца от 0 до 11
 d.setFullYear(2006);
 d.setHours(05);
 d.setMinutes(06);
 d.setSeconds(13);
 d.setMilliseconds(50);

Опять же время и дата устанавливается в соответствии с текущим часовым поясом, который установлен в панели управления Windows. С помощью функции setFullYear() [setMonth()] можно установить не только год, но и месяц с днем [день]:

 var d = new Date(); // Текущая дата и время
 d.setFullYear(2006, 3, 12);
 //
 d.setMonth(3, 12);

Получение элементов даты в JScript

Для получения элементов даты существуют соответствующие методы get*:

 var d = new Date(); // Возмется текущая дата и время
 var day =   TwoDigits(d.getDate());
 var month = TwoDigits(d.getMonth()+1);
 var year =  d.getFullYear(); // getYear();var dayOfWeek = d.getDay(); // День недели от 0 (воскресенье) до 6 (суббота)

var hours   = TwoDigits(d.getHours())
 var minutes = TwoDigits(d.getMinutes())
 var sec     = TwoDigits(d.getSeconds())
 var msec    = d.getMilliseconds();

function TwoDigits(s){
  if(s<10){s = '0'+s;}else{s = ''+s;} return(s)
 }

Для удобства отображения частей дат используйте функцию TwoDigits(), которая добавляет в начало символ “0″ если число состоит из одного символа. Для получения дат в формате UTC нужно использовать свои функции с префиксом UTC (getUTCDate(), getUTCDay() и так далее).

Получение даты из строки

Для перевода текстовой строки в формат даты предназначена функция parse(), которая возвращает количество миллисекунд относительно полночи 1-го января 1970 года. Это статический метод, который можно вызывать без создания объекта даты:

var ms = Date.parse("November 1, 1997 10:15 AM");
 if(ms){ // если дата определилась правильно, то выводим на экран
   WScript.echo(ms);
   var newDate = new Date("1 jan 1970");
   newDate.setMilliseconds(ms);
   WScript.echo(newDate); // выводим на экран полученную дату: Sat Nov 1 07:15:00 UTC+0300 1997
 }

Правила перевода строки в дату аналогичны функции конструктора (см. выше).

Существует также функция UTC(), которая в качестве параметров получает составные элементы даты и возвращает количество миллисекунд относительно полночи 1-го января 1970 года:

 function UTC(year, month, day[, hours[, minutes[, seconds[,ms]]]]) : Number

Получение строки из даты

В JScript таких функций предостаточно, вот полный список с результатами:

 var d = new Date("Wed, 12 Apr 2006 05:06:13 +0000");
 WScript.echo(d);					// Wed Apr 12 05:06:13 UTC+0400 2006
 WScript.echo(d.toDateString());		// Wed Apr 12 2006
 WScript.echo(d.toGMTString());		// Wed, 12 Apr 2006 01:06:13 UTC
 WScript.echo(d.toLocaleDateString());	// 12 апреля 2006 г.
 WScript.echo(d.toLocaleString());		// 12 апреля 2006 г. 5:06:13
 WScript.echo(d.toLocaleTimeString());	// 5:06:13
 WScript.echo(d.toString());			// Wed Apr 12 05:06:13 UTC+0400 2006
 WScript.echo(d.toTimeString());		// 05:06:13 UTC+0400
 WScript.echo(d.toUTCString());		// Wed, 12 Apr 2006 01:06:13 UTC

Получение и установка объекта даты из свойств элементов Microsoft Outlook

Для перевода любого свойства с типом даты в объект Date нужно выполнить следующее преобразование:

 var d = new Date(mailItem.CreationTime);

Для установки свойств следует воспользоваться методом getVarDate(), который возвращает дату в формате VT_DATE.

 var d = new Date();
 mailItem.CreationTime = d.getVarDate();

Работа с датой - следующий день, месяц, год

Для сдвига даты на день, месяц или год нужно использовать методы setDate(), setMonth() и setYear() соответственно. Та же самая картина с часами, минутами и секундами. Например:

 var d = new Date("Wed, 12 Apr 2006 05:06:13 +0400");
 d.setDate(d.getDate() + 25); // прибавление 25 дней, результат: Sun May 7 09:06:13 UTC+0400 2006
 d.setMinutes(d.getMinutes() + 60 * 20); // прибавление 20 часов, результат: Thu Apr 13 01:06:13 UTC+0400 2006
 // и т.д.

С помощью встроенных функций в объект Date JScript предоставляет широкие возможности по работе с датой и временем.

3 комментариев »

  1. Алсу @ 17 августа 2007 12:26

    Здравствуйте!
    А возможность получения номера недели по дате - в JScript есть?

  2. Andrew @ 18 августа 2007 12:48

    Есть конечно - dateObj.getDay()

  3. Outlook Blogger @ 6 сентября 2008 19:58

    Очень полезный FAQ по работе с датами в JavaScript: http://www.irt.org/script/date.htm

TrackBack URL

Оставить комментарий

*

Нажмите для прослушивания


Инфо


RSS лента блога
RSS лента комментариев блога
Рейтинг блогов



Плагин Potolook для Microsoft Outlook
© 2004-2011 Позитик. Все права защищены.

Microsoft®, Outlook® и эмблема Office являются охраняемыми товарными знаками корпорации Майкрософт (Microsoft Corporation) в США и/или других странах.
Копирование и использование материалов разрешается только в случае указания явной гиперссылки на сайт http://www.potolook.ru, как на источник получения информации.

Разработка сайта — "Позитик"

Рейтинг@Mail.ru