Windows script date functions

Windows script date functions

В этом уроке мы пройдём все функции VBScript для работы с датой и временем. Данные функции VBS дают нам возможность получить текущую дату и время, временные промежутки, создавать таймеры и многое другое, что не оставит Вас равнодушными.

Для того что бы получить текущую дату вашего компьютера используется функция «Date», а если Вам понадобиться по мимо даты вывести ещё и время, то надо использовать функцию «Now». Для возврата только времени — «Time».

Так же любой переменной мы можем задать свою дату. Для этого используется символ решётка (#). В данном случае дата прописывается в таком порядке: мм/дд/гггг. Можно так же присвоить время: чч.мм.сс . Давайте посмотрим на пример:

В результате у нас получилась интересная картина. Для переменной «my_date2» мы указали свою дату. Её мы записали, начиная с месяца, но когда мы получили значение переменной, то оказалось, что дата была показана учитывая настройки вашего компьютера. У меня в данном случае показало так: день-месяц-год.

С этим мы разобрались, а теперь рассмотрим функцию vbs — DateDiff. Она позволяет получить значение интервала двух дат. Для этого нам помогут следующие значения интервала:

  • yyyy — год
  • q — квартал
  • m — месяц
  • y — номер дня в году
  • d — день
  • w — номер дня в неделе
  • ww — номер недели в году
  • h — час
  • n — минута
  • s — секунда

Синтаксис функции: DateDiff(«Interval», Date1, Date2, FirstDayOfWeek , FirstWeekOfYear).

  • Interval — Показывает тип интервала, который мы хотим получить. Значения показаны выше.
  • Date1, Date2 — Две даты, между которыми вычисляется разница.
  • FirstDayOfWeek — Необязательный параметр. Определяет, с какого дня следует считать начало недели.
  • FirstWeekOfYear — Необязательный параметр. Указывает на ту неделю, которую следует считать первой в году.

Давайте посмотрим пример данной функции VBScript:

В данном примере всё понятно. Следует обратить внимание на то, что в качестве параметров Date1 и Date2 можно указывать строки. Во втором примере мы так и сделали и, VBS сам распознал, что мы указали дату.

Параметр FirstWeekOfYear может иметь такие значения:

  • vbFirstJan1 — неделя в которой есть 1 января.
  • vbFirstFourDays — использовать неделю, в которой как минимум четыре дня приходятся на новый год.
  • vbFirstFullWeek — первая полная неделя в году

Функция DateAdd

DateAdd позволяет добавить к заданной дате определённый промежуток или убрать этот промежуток.
Выглядит всё это дело так: DateAdd(«Iterval», Number, Date)

  • Iterval — мы проходили с функцией DateDiff.
  • Number — Число, которое надо добавить или вычесть.
  • Date — Дата, с которой работаем.

Вот простенький пример:

Функция DatePart

DatePart вернёт нам определённую часть даты: месяц, год, квартал, день и так далее.
Синтаксис функции: DatePart(«Interval», Date, FirstDayOfWeek , FirstWeekOfYear)

Функции: Hour, Minute, Month, Year, Second, TimeValue

  • Hour — данная функция vbs дат возможность получить число часов из указанного времени (от 0 до 23).
  • Minute — позволяет получить число минут из указанного времени (от 0 до 59).
  • Month — вернёт месяц указанной даты (от 1 до 12).
  • Day — возвращает номер дня указанного месяца (от 1 до 31).
  • Year — вернёт год указанной даты.
  • Second — вернёт количество секунд, указанной даты (от 0 до 59).
  • TimeValue — возвращает время указанной даты.

Сразу посмотрим пример:

Функция Timer

Данная функция возвращает количество секунд, прошедших с полуночи, с точностью до 1 миллисекунды. Немного смекалки и данная функция vbs позволяет нам узнать время выполнения кода c поразительной точностью. Давайте посмотрим пример с циклом While … Wend:

Перед началом цикла мы узнали, сколько секунд прошло с полуночи и сохранили это число в переменную «old_time». После завершения цикла мы ещё раз узнали сколько прошло секунд с полуночи, но по мимо этого, ещё и вычили предыдущее значение. Таким способом мы получили время, в секундах, затраченное на выполнения цикла vbs.

Функция TimeSerial и DateSerial

Функция TimeSerial позволяет преобразовать указанные значения в дату и время. Для этой функции указывают три значения через запятую, в круглых скобках: часы (от 0 до 23), минуты (от 0 до 59), секунды (от 0 до 59). Если какое либо значение превышает допустимый лимит, то это отражается на следующем значении.

Читайте также:  Как отключит firewall windows

Функция DateSerial — делает тоже самое, но только: год, месяц, день.

Здесь всё понятно.

Функция Weekday

Weekday позволяет нам получить номер дня недели указанной даты. Данная функция имеет такой вид: Weekday(date, FirstDayOfWeek), где date — это используемая дата; FirstDayOfWeek — это день недели, который нужно считать началом недели. Последний параметр не обязателен и может иметь такие значения:

  • vbUseSystemDayOfWeek — использовать настройки по умолчанию системы
  • vbSunday — воскресенье
  • vbMonday — понедельник
  • vbTuesday -вторник
  • vbWednesday — среда
  • vbThursday — четверг
  • vbFriday — пятница
  • vbSaturday — суббота

Вместо этих выражений можно использовать цифры (от 0 до 7).

В данном случае я указал начало недели с воскресенья и по этой причине вторник оказался третьем днём недели.

Функция WeekdayName

Замечательная функция VBScript. Она возвращает наименование указанного дня недели.
Функция имеет данный синтаксис: WeekdayName(Number, Abbr, FirstDayOfWeek).

  • Number — Номер дня недели
  • Abbr — использование или не использование аббревиатуры. Если True, то вернёт аббревиатуру, в противном случае — полное название
  • FirstDayOfWeek — уже выяснили.

Функция DateValue

Данная простенькая функция возвращает указанное значение имеющее тип Date. Ничем особым она не отличается.

Функция MonthName

Возвращает название указанного месяца. Так же можно сделать показ аббревиатуры как в функции WeekdayName.

Стоит обратить внимание на то, что месяц май не сокращается, а пишется лишь с маленькой буквы.

Функция FormatDateTime

Данная функция VBScript позволяет устанавливать формат даты и времени. Всего форматов 5. Описывать я их не буду, лучше взгляните сами.

Здесь всё понятно.

Функция IsDate

Данная функция проверяет корректность указанной даты. Если дата указана корректно, то функция вернёт True и False в противном случае.

Форум

Справочник

Создание

Аргументы

Дата измеряется в миллисекундах, начиная от полуночи 01 января 1970 года GMT+0. День содержит 86,400,000 миллисекунд.

Объект Date ведет себя одинаково на всех платформах.

Date поддерживает как методы для работы в зоне UTC (GMT+0), так и методы для работы с местным временем.
Местное время — это то, которое установлено на компьютере, на котором выполняется яваскрипт.

Описание, примеры

Если конструктор запущен без аргументов, то возвращается текущая дата.

При вызове с одним аргументом — строкой, строка разбирается и интерпретируется как дата, так же, как и в методе Date.parse.

При объявлении с несколькими аргументами, отсутствующие аргументы автоматически считаются равными 0.

Методы

См. также

Спасибо за справку

А что с методом getVarDate?

Привет автору. Пожелание: хотелось бы, чтобы в столбце методов было рядом с каждым методом его кратенькое описание — типа для чего он нужен. Это для удобства

Привет автору. Пожелание: хотелось бы, чтобы в столбце методов было рядом с каждым методом его кратенькое описание — типа для чего он нужен. Это для удобства

+1 увы, юзабилити этого сайта обратно пропорционально количеству полезной информации

Заплатите автору, и будет вам и юзабилити, и сверхбыстрая закачка всей нужной информацию прямо в ваш мозг!

Третий параметр в dateObj = new Date(year, month, date, . ) лучше назвать day.

Day — день недели, а Date — день месяца )

>Объект Date ведет себя одинаково на всех платформах.

Увы, но нет. Правила Date.parse интерпретируются по-разному(Safari может распарсить краткую строку только в формате m/d/Y, даже использование ‘-‘ в качестве разделителя вызовет ошибку. Тогда как остальные браузеры(по крайней мере IE, Firefox, Chrome) понимают даже формат MySQL(Y-m-d).

Можно как-то проверить строку — является ли она датой?
я так понимаю:

еще вопрос не работает подсчет времени жизни сайта
d0 = new Date(‘September 30, 2008’);
d1 = new Date();
dt = (d1.getTime() — d0.getTime()) / (1000*60*60*24);
выдает
Line 3 Error: Could not convert variant of type (String) into type (Double)
как преобразовать типы?

Скорее всего достаточно заменить

в разделе аргументы, этой статьи написано: «Количество миллисекунд: от 0 до 999.»
почему 999 ??

Потому что 1000 миллисекунд — это уже следующая секунда

Вот пр. странные люди. В конструкторе номер месяца сделали 0-based. Зачем.
Короче попался на эту «странность».

Подскажите, как вычислить предыдущую дату? Скажем пользователь ввел 25.05.2011, мне нужно получить 24.05.2011. Как это сделать?

а можно как нибудь сравнивать две даты, с помощью привычных .. или, на худой конец, есть ли какие-нибудь методы для этого

Засовывать не цифры, а строку[хотя в статье указано про Date.parse.]:

то месяц( month ) — отображается естественно:
month
Месяц от 1 (Янв) до 12 (Дек).
================
Вариант для Записи Число.Меcяц.Год:

Подскажите с проблемой работаю с гугл таблицами , создал скрипт
new Date() выводит в ячейку к примеру «27.04.2016 14:18:25»
а нужно только «27.04.2016»
Как это можно реализовать
пробовал
new Date(yyyy-mm-dd)
new Date(yyyy/mm/dd).
new Date(year, month, date[, hours, minutes, seconds, ms])
new Date(now.getFullYear(), now.getMonth(), now.getDate())
. ничего не помогает

Читайте также:  Слетели все принтеры windows 10

Справился так:
var today = new Date(); // сегодняшнеяя дата и время
var yr = new Date(today.getFullYear(), today.getMonth(), today.getDate()); //оставляем только год,мес,день
if ( idCol == 20 ) <
sheetR.getRange(idRow, idCol + 1).setValue(yr);

Здраствуйте пожалуйста подскажите я в javascript полный ноль есть код Js

Как вывести ответ из этого кода типа «4 года 3 месяца 1 день»

Формат даты и времени в пакете Windows script

В пакете Windows (Windows XP) script Мне нужно отформатировать текущую дату и время для последующего использования в именах файлов и т.д.

Он похож на вопрос Как добавить дату в пакетных файлах, но со временем также.

У меня это до сих пор:

Есть ли способ, которым я могу разрешить одну цифру часа в% TIME%, поэтому я могу получить следующее?

Я закончил с этим script:

:: На WIN2008R2, например. Мне нужно было сделать ваш “установленный месяц =% даты:

3,2%”, как показано ниже: иначе появляется 00 для MONTH

Вот как я создаю имя файла журнала (на основе http://ss64.com/nt/syntax-getdate.html):

Если PowerShell установлен, вы можете легко и надежно получить дату/время в любом формате, который вам нужен, например:

Конечно, в настоящее время PowerShell всегда установлен, но в Windows XP вы, вероятно, захотите использовать этот метод, если ваша партия script используется в известной среде, где вы знаете, что PS доступен (или проверьте свою партию файл, если доступна PowerShell…)

Вы можете разумно спросить: зачем вообще использовать пакетный файл, если вы можете использовать PowerShell для получения даты/времени, но я думаю, что некоторые очевидные причины: (а) вы не все знакомы с PowerShell и по-прежнему предпочитаете делать большинство вещей старомодным способом с пакетными файлами или (б) вы обновляете старый script и не хотите переносить все на PS.

Я обычно делаю это так, когда мне нужна строка даты/времени:

Это для немецкого формата даты/времени (dd.mm.yyyy hh: mm: ss). В основном я конкатенирую подстроки и, наконец, заменяю все пространства нулями.

Краткое объяснение того, как работают подстроки:

Таким образом, чтобы получить только год с даты, например “29.03.2018”, используйте:

Сегодня я столкнулся с этой проблемой и решил ее:

Он заменяет пробелы 0s и в основном нулевые прокладки в час.

После некоторого быстрого поиска я не выяснил, нужны ли ему расширения команд (все еще работало с SETLOCAL DISABLEEXTENSIONS).

Как уже отмечалось, анализ даты и времени полезен только в том случае, если вы знаете формат, используемый текущим пользователем (например, MM/dd/yy или dd-MM-yyyy, чтобы назвать два). Это можно определить, но к тому моменту, когда вы сделаете все, что нужно, и проанализируйте, вы все равно столкнетесь с ситуацией, когда используется неожиданный формат, и вам потребуются дополнительные настройки.

Вы также можете использовать некоторую внешнюю программу, которая вернет пул дат в предпочтительном формате, но у этого есть недостатки, связанные с необходимостью распространять служебную программу с помощью script/batch.

Есть также пакетные трюки, использующие часы CMOS в довольно грубом виде, но это tooo близко к оголенным проводам для большинства людей, а также не всегда предпочтительное место для получения даты/времени.

Ниже приведено решение, позволяющее избежать вышеуказанных проблем. Да, это вводит некоторые другие проблемы, но для моих целей я нашел это самым простым и ясным, самым портативным решением для создания datestamp в .bat файлах для современных систем Windows. Это всего лишь пример, но я думаю, вы увидите, как изменить для других форматов даты и/или времени и т.д.

Следующий может быть не прямым ответом, а близким?

По крайней мере, это может вдохновить.

Если вам не нужен именно этот формат:

Затем вы можете использовать следующие 3 строки кода, в которых используются% date% и% time%:

Примечание. Символы / и : удаляются, а символ . и пробел заменяются символом подчеркивания.

Пример вывода (принято в среду 8/5/15 в 12:49 PM с 50 секундами и 93 миллисекундами):

Форматирование offset:length поддерживаемое командой SET в Windows, не позволит вам вставлять 0 как вам кажется, вас интересует.

Однако вы можете закодировать сценарий BATCH для проверки того, что час меньше 10 и
соответственно, с другой echo строкой.

Вы также можете перейти на другие методы программирования, чтобы попасть сюда.

Это довольно просто в unix bash (доступно с Cygwin на Windows), чтобы просто сказать:

Читайте также:  Windows socket error попытка установить соединение была безуспешной

И он всегда правильно накладывается.

Я сделал это следующим образом:

Вы можете сделать это намного проще:

echo% datetimef% return “

Первая строка преобразует дату/время в желаемый формат
а второй заменяет все пробелы на 0 (ноль).

Я действительно новичок в пакетных файлах, и это мой код! (Я не уверен, почему, но я не мог комбинировать дату/t и время/т вместе, и я не мог использовать % date% и % time% напрямую без переменной…)

Это отчасти повторное использование от других (вопрос состоял в том, чтобы получить отформатированное время для использования в качестве имени файла).

Первая строка всегда выводит в этом формате аспекты часового пояса:
20150515150941.077000 + 120
Это оставляет вам только форматирование вывода в соответствии с вашими пожеланиями.

Чтобы создать временную метку YYYY-MM-DD hh:mm:ss (24 часа), я использую:

Есть еще один простой способ сделать это:

Эта партия script сделает именно то, что хочет O.P. (протестировано в Windows XP SP3).

Я также использовал этот умный трюк реестра, описанный ранее “jph”, IMHO – это самый простой способ получить 100% -ное согласованное форматирование даты до «yyyy_MM_dd» в любой новой или старой системе Windows. Изменение одного значения реестра для этого является мгновенным временным и тривиальным; он длится всего несколько миллисекунд, прежде чем он будет немедленно возвращен обратно.

Дважды щелкните этот командный файл для мгновенной демонстрации, появится окно командной строки и отобразится метка времени.

Создайте файл под названием “search_files.bat” и поместите содержимое в файл. Затем дважды щелкните по нему. Временная переменная% THH% была введена в действие для надлежащего управления AM. Если в первые 2 цифры времени есть 0, Windows игнорирует остальную часть имени файла LOG.

Этот файл bat (save as datetimestr.bat) создает строку datetime 3 раза: (1) длинную строку даты и времени с днем ​​недели и секундами,
(2) короткая строка datetime без них и
(3) короткая версия кода.

Чтобы отдать должное, я объединил концепции Питера Мортенсена (18-18 июня в 21:02) и opello (25 августа 2011 года в 14:27).

Вы можете написать это намного короче, но эта длинная версия упрощает чтение и понимание кода.

Мне нравится короткая версия поверх @The lorax,
но для других языковых настроек это может быть немного иначе.

Например, в настройках немецкого языка (с естественным форматом даты: dd.mm.yyyy) запрос месяца должен быть изменен с 4,2 до 3,2:

Это мои 2 цента за datetime string . В системах MM DD YYYY переключается первая и вторая записи %DATE:

Я попробовал принятый ответ, и он работает очень хорошо. К сожалению, формат времени США выглядит как H: MM: SS.CS, а недостающее 0 на фронте вызывает проблемы с анализом до 10 часов утра. Чтобы преодолеть это препятствие, а также разрешить разбор большинства форматов мирового времени, я придумал эту простую процедуру, которая, похоже, работает достаточно хорошо.

Хорошая вещь с этой подпрограммой заключается в том, что вы передаете строку времени в качестве первого параметра и имя переменной среды, в которую вы хотите указать время (в секундах) в качестве второго параметра. Например:

Возможно, что-то вроде этого:

В таких ситуациях используйте простой, стандартный подход к программированию:
Вместо того, чтобы тратить огромные усилия на анализ неизвестного объекта, просто сохраните текущую конфигурацию, reset в известном состоянии, извлеките информацию и затем восстановите исходное состояние. Используйте только стандартные ресурсы Windows.

В частности, форматы даты и времени хранятся в разделе реестра
HKCU\Control Panel\International\in [MS definition] “values”: “sTimeFormat” и “sSortTate”.
Reg – это редактор реестра консоли, входящий в состав всех версий Windows.
Для изменения ключа HKCU не требуются повышенные привилегии

Простой, понятный и должен работать во всех регионах.

По причинам, которые я не понимаю, сброс значения “sShortDate” вступает в силу немедленно
консольное окно, но сброс очень похожего значения “sTimeFormat” не вступает в силу
пока не откроется новое окно консоли. Однако единственным изменчивым является разделитель –
позиции цифр фиксированы. Точно так же токен времени “HH” должен предусматривать предшествующие нули, но это не так.
К счастью, обходные пути легки.

Разделите результаты команды date косой чертой, затем вы можете переместить каждый из токенов в соответствующие переменные.

Для очень простого решения для числовой даты для использования в именах файлов используйте следующий код:

Используйте REG для сохранения/изменения/восстановления того, что когда-либо значения наиболее полезны для вашего bat файла. Это окна 7, для других версий вам может понадобиться другое имя ключа.

Оцените статью