Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "FormatTime", в содержании - "String Menagement" - "FormatTime", v1.0.48.03.

Ник переводчика: YMP.

Настоящее имя переводчика: Юрий Попов.

FormatTime

Преобразует метку времени формата YYYYMMDDHH24MISS в указанный формат даты/времени.

FormatTime, OutputVar [, YYYYMMDDHH24MISS, Format]

Параметры

OutputVar Имя переменной, куда будет сохранён результат.
YYYYMMDDHH24MISS Оставьте этот параметр пустым, чтобы использовать текущие локальные дату и время. Иначе укажите метку времени в формате YYYYMMDDHH24MISS либо целиком, либо её начальную часть. Если дата и/или время заданы с ошибкой — например, 29 февраля для невисокосного года — дата и/или время будут опущены из OutputVar. Хотя поддерживаются только годы между 1601 и 9999, но часть метки, относящаяся к времени, будет отформатирована правильно и для более ранних лет, если время задано правильно.

Прим. переводчика — элементы формата YYYYMMDDHH24MISS:

YYYY — год, 4 цифры
MM — месяц, 2 цифры (01-12)
DD — день месяца, 2 цифры (01-31)
HH24 — час в 24-часовом формате, 2 цифры (00-23)
MI — минуты, 2 цифры (00-59)
SS — секунды, 2 цифры (00-59)
Format Если опущен, будет использоваться "длинный" формат даты и времени, соответствующий локали текущего пользователя. Например: 4:55 27 ноября 2004 г.

Иначе укажите один или несколько форматов из списка ниже, с любым количеством пробелов или знаков препинания между ними (запятые экранировать не нужно). Например: M/d/yyyy h:mm tt (заметьте, что M должна быть в верхнем регистре).

Форматы даты (чувствительны к регистру)

d День месяца без нуля в начале (1 - 31).
dd День месяца с нулём в начале (01 - 31).
ddd Сокращённое название дня недели (например, Пн) на языке текущего пользователя.
dddd Полное название дня недели (например, Понедельник) на языке текущего пользователя.
M Месяц без нуля в начале (1 - 12).
MM Месяц с нулём в начале (01 - 12).
MMM Сокращённое название месяца (например, Янв) на языке текущего пользователя.
MMMM Полное название месяца (например, Январь) на языке текущего пользователя.
y Год без века, без нуля в начале (0 - 99).
yy Год без века, с нулём в начале (00 - 99).
yyyy Год с веком. Например: 2005.
gg Период/эра для локали текущего пользователя (будет пустым, если таковые отсутствуют).

Форматы времени (чувствительны к регистру)

h Часы без нуля в начале; 12-часовой формат (1 - 12).
hh Часы с нулём в начале; 12-часовой формат (01 - 12).
H Часы без нуля в начале; 24-часовой формат (0 - 23).
HH Часы с нулём в начале; 24-часовой формат (00 - 23).
m Минуты без нуля в начале (0 - 59).
mm Минуты с нулём в начале (00 - 59).
s Секунды без нуля в начале (0 - 59).
ss Секунды с нулём в начале (00 - 59).
t Односимвольный маркёр времени, такой как A или P (зависит от локали).
tt Многосимвольный маркёр времени, такой как AM или PM (зависит от локали).

Следующие форматы должны использоваться отдельно, т.е. без каких-либо других форматов или другого текста в параметре Format. Эти форматы нечувствительны к регистру.

(Пусто) Оставьте параметр Format пустым, чтобы получить время, за которым следует длинная дата. Например, 4:55 27 ноября 2004 г.
Time Время в локали текущего пользователя, например, 5:26.
ShortDate Короткая дата в локали текущего пользователя, например, 29.02.04.
LongDate Длинная дата в локали текущего пользователя, например, 23 апреля 2004 г.
YearMonth Год и месяц в локали текущего пользователя, например, Февраль 2004 г.
YDay День года без нулей в начале (1 - 366).
YDay0 День года с нулями в начале (001 - 366).
WDay День недели (1 - 7). 1 соответствует воскресенью.
YWeek Полный год и неделя в стандарте ISO 8601. Например, 200453. Если четыре или более дней недели, содержащей 1 января, приходится уже на новый год, она считается неделей 1. Иначе она считается последней неделей старого года,а первой неделей нового будет следующая за ней. Следовательно, 4 января и первый четверг января всегда находятся в неделе 1.

Добавочные опции

Нижеследующие опции можно указывать вместе с параметром YYYYMMDDHH24MISS, непосредственно после метки времени (если метка отсутствует, их можно использовать без неё). В следующем примере обратите внимание на отсутствие запятых между последними четырьмя словами:

FormatTime, OutputVar, 20040228 LSys D1 D4
R: Обратный порядок. Поместить дату перед временем (имеет смысл только при пустом параметре Format).

Ln: Если эта опция отсутствует, используется локаль текущего пользователя. Чтобы использовать системную локаль, укажите LSys. Чтобы использовать какую-либо конкретную локаль, укажите букву L и сразу за ней шестнадцатеричный или десятичный идентификатор локали (LCID). Информацию о том, как получить LCID,ищите на www.microsoft.com по фразе Locale Identifiers.

Dn: Опции для даты. Поставьте вместо n одно из следующих чисел: Tn: Опции для времени. Поставьте вместо n одно из следующих чисел:

Замечание: Dn и Tn можно повторять, чтобы задействовать более одной опции, как в этом примере: FormatTime, OutputVar, 20040228 D2 D4 T1 T8

Примечания

Буквы и числа, которые должны перейти из Format в OutputVar без изменений, нужно заключать в одиночные кавычки, как в этом примере: 'Дата:' MM/dd/yy 'Время:' hh:mm:ss tt

Напротив, не буквенно-цифровые символы, такие как пробел, табуляция, перевод строки (`n), наклонная черта, двоеточие, запятая и другие знаки препинания не требуют заключения в кавычки. Исключением является сама одиночная кавычка: чтобы передать её литерально, поставьте четыре одиночных кавычки (''''), или только две, если она уже находится внутри внешней пары кавычек.

Если Format содержит элементы даты и времени вместе, они не должны идти вперемешку. Другими словами, строка должна делиться на две половины: времени и даты. Например, строка "hh yyyy mm" не приведёт к ожидаемому результату, поскольку элемент даты стоит между двумя элементами времени.

Если Format содержит число месяца (в формате d или dd), а за ним следует полное название месяца (MMMM), для месяца используется форма родительного падежа (если в языке есть такая форма).

Если Format содержит более 2000 знаков, OutputVar будет пустой.

Сложение и вычитание дат и времён может осуществляться через EnvAdd и EnvSub.

Как можно конвертировать в обратном направлении, т.е. из форматированной даты/времени в формат YYYYMMDDHH24MISS, смотрите здесь: www.autohotkey.com/forum/topic20405.html

Примеры

FormatTime, TimeString
MsgBox Текущие время и дата (сначала время): %TimeString%

FormatTime, TimeString, R
MsgBox Текущие время и дата (сначала дата): %TimeString%

FormatTime, TimeString,, Time
MsgBox Текущее время: %TimeString%

FormatTime, TimeString, T12, Time
MsgBox Текущее время в 24-часовом формате: %TimeString%

FormatTime, TimeString,, LongDate
MsgBox Текущая дата (длинный формат): %TimeString%

FormatTime, TimeString, 20050423220133, dddd MMMM d, yyyy hh:mm:ss tt
MsgBox Указанные дата и время, после форматирования: %TimeString%

FormatTime, TimeString, 200504, 'Месяц': MMMM`n'День': dddd
MsgBox %TimeString%

FormatTime, YearWeek, 20050101, YWeek
MsgBox 1 января 2005 находится в неделе номер %YearWeek%

; Узнать время изменения файла.
FileSelectFile, FileName, 3,, Выберите файл
if FileName =  ; Файл не был выбран.
    return
FileGetTime, FileTime, %FileName%
FormatTime, FileTime, %FileTime%   ; Поскольку последний параметр опущен,
                                   ; используются длинные дата и время.
MsgBox Выбранный файл последний раз был изменён %FileTime% 

; Следующая ниже функция преобразует заданное число секунд в часы, минуты
; и секунды (формат hh:mm:ss).

MsgBox % FormatSeconds(7384)  ; 7384 = 2 часа + 3 минуты + 4 секунды.
                              ; Это даёт 2:03:04.

FormatSeconds(NumberOfSeconds)  ; Преобразует заданное число секунд
                                ; к формату hh:mm:ss.
{
    time = 19990101  ; Полночь произвольной даты.
    time += %NumberOfSeconds%, seconds
    FormatTime, mmss, %time%, mm:ss
    return NumberOfSeconds//3600 ":" mmss  ; Такой метод используется для
                                           ; поддержки случаев, когда количество
                                           ; секунд превышает 24 часа.
}

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.