Встроенные объекты

Локаль

Локаль – первый и самый важный аргумент всех методов, связанных с интернационализацией.

Локаль описывается строкой из трёх компонентов, которые разделяются дефисом:

  1. Код языка.
  2. Код способа записи.
  3. Код страны.

На практике не всегда указаны три, обычно меньше:

  1. – русский язык, без уточнений.
  2. – английский язык, используемый в Англии ().
  3. – английский язык, используемый в США ().
  4. – китайский язык (), записываемый упрощённой иероглифической письменностью (), используемый в Китае.

Также через суффикс можно указать расширения локалей, например – тайский язык (), используемый в Таиланде (), с записью чисел тайскими буквами (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) .

Стандарт, который описывает локали – RFC 5464, языки описаны в IANA language registry.

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

Если локаль не указана или – берётся локаль по умолчанию, установленная в окружении (браузере).

– вспомогательная настройка, которую тоже можно везде указать, она определяет способ подбора локали, если желаемая недоступна.

У него два значения:

  • – означает простейший порядок поиска путём обрезания суффикса, например → → → локаль по умолчанию.
  • – использует встроенные алгоритмы и предпочтения браузера (или другого окружения) для выбора подходящей локали.

По умолчанию стоит .

Если локалей несколько, например то пытается подобрать наиболее подходящую локаль для первой из списка (китайская), если не получается – переходит ко второй (русской) и так далее. Если ни одной не нашёл, например на компьютере не совсем поддерживается ни китайский ни русский, то используется локаль по умолчанию.

Как правило, является здесь наилучшим выбором.

Время и таймеры

Функция —

Здесь мы кратко поговорим о функции обратного отсчёта, а также как выполнить код по прошествии некоторого времени (функция ):

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

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

Функция —

Кроме того, программа может выполнять код несколько раз с помощью функции :

Функция в выполняется 5 раз с задержкой в 2 секунды (2000 миллисекунд), после прерывается.

Получение компонентов даты

Существуют методы получения года, месяца и т.д. из объекта :

getFullYear()
Получить год (4 цифры)
getMonth()
Получить месяц, от 0 до 11.
getDate()
Получить день месяца, от 1 до 31, что несколько противоречит названию метода.
getHours(), getMinutes(), getSeconds(), getMilliseconds()
Получить, соответственно, часы, минуты, секунды или миллисекунды.

Никакого . Только

Многие интерпретаторы JavaScript реализуют нестандартный и устаревший метод , который порой возвращает год в виде двух цифр. Пожалуйста, обходите его стороной. Если нужно значение года, используйте .

Кроме того, можно получить определённый день недели:

getDay()
Вернуть день недели от (воскресенье) до (суббота). Несмотря на то, что в ряде стран за первый день недели принят понедельник, в JavaScript начало недели приходится на воскресенье.

Все вышеперечисленные методы возвращают значения в соответствии с местным часовым поясом.

Однако существуют и их UTC-варианты, возвращающие день, месяц, год для временной зоны UTC+0: getUTCFullYear(), getUTCMonth(), getUTCDay(). Для их использования требуется после подставить .

Если ваш местный часовой пояс смещён относительно UTC, то следующий код покажет разные часы:

Помимо вышеприведённых методов, существуют два особых метода без UTC-варианта:

getTime()

Для заданной даты возвращает таймстамп – количество миллисекунд, прошедших с 1 января 1970 года UTC+0.

getTimezoneOffset()

Возвращает разницу в минутах между местным часовым поясом и UTC:

Форматирование дат и времени

Последнее обновление: 31.10.2015

Для форматирования вывода дат и времени применяется ряд строковых форматов:

Описатель

Описание

D

Поный формат даты. Например, 17 июля 2015 г.

d

Краткий формат даты. Например, 17.07.2015

F

Полный формат даты и времени. Например, 17 июля 2015 г. 17:04:43

f

Полный формат даты и краткий формат времени. Например, 17 июля 2015 г. 17:04

G

Краткий формат даты и полный формат времени. Например, 17.07.2015 17:04:43

g

Краткий формат даты и времени. Например, 17.07.2015 17:04

M, m

Формат дней месяца. Например, 17 июля

O, o

Формат обратного преобразования даты и времени. Вывод даты и времени в соответствии со стандартом ISO 8601 в формате
«yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss’.’fffffffzzz». Например, 2015-07-17T17:04:43.4092892+03:00

R, r

Время по Гринвичу. Например, Fri, 17 Jul 2015 17:04:43 GMT

s

Сортируемый формат даты и времени. Например, 2015-07-17T17:04:43

T

Полный формат времени. Например, 17:04:43

t

Краткий формат времени. Например, 17:04

U

Полный универсальный полный формат даты и времени. Например, 17 июля 2015 г. 17:04:43

u

Краткий универсальный полный формат даты и времени. Например, 2015-07-17 17:04:43Z

Y, y

Формат года. Например, Июль 2015

Выведем текущею дату и время во всех форматах:

DateTime now = DateTime.Now;
Console.WriteLine("D: " + now.ToString("D"));
Console.WriteLine("d: " +  now.ToString("d"));
Console.WriteLine("F: " + now.ToString("F"));
Console.WriteLine("f: {0:f}", now);
Console.WriteLine("G: {0:G}", now);
Console.WriteLine("g: {0:g}", now);
Console.WriteLine("M: {0:M}", now);
Console.WriteLine("O: {0:O}", now);
Console.WriteLine("o: {0:o}", now);
Console.WriteLine("R: {0:R}", now);
Console.WriteLine("s: {0:s}", now);
Console.WriteLine("T: {0:T}", now);
Console.WriteLine("t: {0:t}", now);
Console.WriteLine("U: {0:U}", now);
Console.WriteLine("u: {0:u}", now);
Console.WriteLine("Y: {0:Y}", now);

Консольный вывод:

Настройка формата времени и даты

Не всегда удобно использование встроенных форматов даты и времени. Иногда бывает необходимо задать сообственную форму отображения объекта DateTime.
В этом случае мы можем составить свой формат из описателей:

Описатель

Описание

d

Представляет день месяца от 1 до 31. Одноразрядные числа используются без нуля в начале

dd

Представляет день месяца от 1 до 31. К одноразрядным числам в начале добавляется ноль

ddd

Сокращенное название дня недели

dddd

Полное название дня недели

f / fffffff

Представляет миллисекунды. Количество символов f указывает на число разрядов в миллисекундах

g

Представляет период или эру (например, «н. э.»)

h

Часы в виде от 1 до 12. Часы с одной цифрой не дополняются нулем

hh

Часы в виде от 01 до 12. Часы с одной цифрой дополняются нулем

H

Часы в виде от 0 до 23. Часы с одной цифрой не дополняются нулем

HH

Часы в виде от 0 до 23. Часы с одной цифрой дополняются нулем

K

Часовой пояс

m

Минуты от 0 до 59. Минуты с одной цифрой не дополняются начальным нулем

mm

Минуты от 0 до 59. Минуты с одной цифрой дополняются начальным нулем

M

Месяц в виде от 1 до 12

MM

Месяц в виде от 1 до 12. Месяц с одной цифрой дополняется начальным нулем

MMM

Сокращенное название месяца

MMMM

Полное название месяца

s

Секунды в виде числа от 0 до 59. Секунды с одной цифрой не дополняются начальным нулем

ss

Секунды в виде числа от 0 до 59. Секунды с одной цифрой дополняются начальным нулем

t

Первые символы в обозначениях AM и PM

tt

AM или PM

y

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

yy

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

yyy

Год из трех цифр

yyyy

Год из четырех цифр

yyyyy

Год из пяти цифр. Если в году меньше пяти цифр, то он дополняется начальными нулями

z

Представляет смецщение в часах относительно времени UTC

zz

Представляет смецщение в часах относительно времени UTC. Если смещение представляет одну цифру, то она дополняется начальным нулем.

Создадим пару своих форматов:

DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("hh:mm:ss"));
Console.WriteLine(now.ToString("dd.MM.yyyy"));

Консольный вывод:

05:04:43
17.07.2015

НазадВперед

Создание даты – 4 примера

В JavaScript создание даты осуществляется с помощью объекта . Объект представляет собой точку на оси времени и предназначен для хранения даты и времени с точностью до миллисекунды.

Примеры создания даты в JavaScript.

1. Создание текущей даты и времени.

Получить текущую дату и время в JavaScript осуществляется посредством создания экземпляра объекта Date без указания параметров:

// текущая дата (дата и время, которая была в момент создания экземпляра объекта Date на локальном компьютере пользователя)
var now = new Date();
// например, выведем текущую дату в консоль
console.log(now);

Если нужно получить только сегодняшнюю дату в формате строки, то можно воспользоваться методом :

var now = new Date().toLocaleDateString(); // 19.12.2019

Текущее время пользователя можно получить так:

var now = new Date().toLocaleTimeString(); // 11:02:48
var now = new Date().toLocaleTimeString().slice(0,-3); // 11:02  

Дату и время в формате строки можно получить следующим образом:

var now = new Date().toLocaleString(); // 19.12.2019, 11:02:48

2. Создание даты путём указания объекту количества миллисекунд, прошедших с 1 января 1970 00:00:00 UTC.

// 1 год (не высокосный) = 365*24*60*60*1000 = 31536000000 мс  
// например, создадим дату 01.01.1971, 00:00:00 по UTC:
var date1 = new Date(31536000000);

3. Создание даты посредством указания её объекту Date в виде строки.

При этом варианте создания даты JavaScript попытается понять переданную ей строку и сформировать на основе её дату. Преобразование строки в дату в JavaScript осуществляется с помощью метода .

Например:

// создание даты на основе строки в формате DD.MM.YY
var date1 = new Date('05.11.19');
// создадим дату на основе строки в формате YYYY-MM-DDThh:mm:ss.sss (символ T используется для разделения даты и времени)
var date2 = new Date('2015-02-24T21:23');
// создадим дату на основе строки с указанием часового пояса (формат YYYY-MM-DDThh:mm:ss.sss±hh:mm):
var date3 = new Date('2015-02-24T22:02+03:00');  

4. Создание даты посредством указания следующих параметров через запятую: год (4 цифры), месяц (отсчёт ведётся с 0), день (1..31), часы (0..23), минуты (0..59), секунды (0..59), миллисекунды (0..999). Причём обязательными из них являются только первые два параметра.

Пример создания даты с указанием только обязательных параметров:

// создадим дату 01.01.2015 (неуказанные параметры по умолчанию равны: число - 01, часы - 00, минуты - 00, секунды - 00, миллисекунды – 000).
var date1 = new Date(2015,01);
// создадим дату 24.01.2015, 21:23
var date2 = new Date(2015,01,24,21,23);  

Примечание: Если Вам необходимо установить дату и время в UTC, то можно воспользоваться методом .

//1 пример
var date1 = Date.UTC(2015,1,1);
var date2 = new Date(date1);
alert(date2.toUTCString());
//2 пример
var newDate = new Date(Date.UTC(2015,1,1));
alert(newDate.toUTCString());  

3 Задание определенной даты

Как получить текущее время мы разобрались, а как создать объект , который бы содержал другую дату или время?

Тут тоже все просто. Чтобы задать определенный день, нужно написать код вида:

Все просто и очевидно, но есть два нюанса:

  1. Год нужно задавать от 1900.
  2. Месяцы нумеруются с нуля.

Интересно

Это тоже наследие операционной системы Unix: там программисты обозначали год двумя цифрами. Вместо 1977 писали просто 77. Поэтому 77 станет правильным годом, если мы считаем от 1900 года.

Например, я родился 21 марта 1989 года. Март — третий месяц, значит мне нужно написать

Код Вывод на экран

Месяцы нумеруются с нуля, а дни — нет. Немного странно, да?

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

Задание определенного времени

Задать определенное время тоже достаточно просто: для этого нужно написать команду вида:

Часы, минуты и секунды нумеруются с нуля: программист внутри вас должен вздохнуть спокойно.

Пример:

Код Вывод на экран

Мы задали время 12:15 и дату 4 июня 2005 года. Читается немного сложновато для не программиста, зато работает как надо.

Даты, Intl.DateTimeFormat

Синтаксис:

Первый аргумент – такой же, как и в , а в объекте мы можем определить, какие именно части даты показывать (часы, месяц, год…) и в каком формате.

Полный список свойств :

Свойство Описание Возможные значения По умолчанию
Алгоритм подбора локали ,
Алгоритм подбора формата ,
Включать ли время в 12-часовом формате — 12-часовой формат, — 24-часовой
Временная зона Временная зона, например
День недели , ,
Эра , ,
Год , или
Месяц , , , , или
День , или
Час ,
Минуты ,
second Секунды ,
Название таймзоны (нет в IE11) ,

Все локали обязаны поддерживать следующие наборы настроек:

  • weekday, year, month, day, hour, minute, second
  • weekday, year, month, day
  • year, month, day
  • year, month
  • month, day
  • hour, minute, second

Если указанный формат не поддерживается, то настройка задаёт алгоритм подбора наиболее близкого формата: – по и – по умолчанию, на усмотрение окружения (браузера).

Использование:

Например:

Длинная дата, с настройками:

Только время:

Строки, Intl.Collator

Синтаксис:

Параметры:

Локаль, одна или массив в порядке предпочтения.

Объект с дополнительными настройками:

  • – алгоритм выбора подходящей локали.

  • – цель сравнения: сортировка или поиск , по умолчанию .

  • – чувствительность: какие различия в символах учитывать, а какие – нет, варианты:

    • – учитывать только разные символы, без диакритических знаков и регистра, например: , , .
    • – учитывать символы и диакритические знаки, например: , , .
    • – учитывать символы и регистр, например: , , .
    • – учитывать всё: символ, диакритические знаки, регистр, например: , , , используется по умолчанию.
  • – игнорировать знаки пунктуации: , по умолчанию .

  • – использовать ли численное сравнение: , если , то будет , иначе .

  • – в сортировке должны идти первыми прописные или строчные буквы, варианты: (прописные), (строчные) или (стандартное для локали, также является значением по умолчанию). Не поддерживается IE11.

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

Использование:

Результат имеет значение (больше), (равно) или (меньше).

Например:

Выше были использованы полностью стандартные настройки. Они различают регистр символа, но это различие можно убрать, если настроить чувствительность :

JavaScript

JS Array
concat()
constructor
copyWithin()
entries()
every()
fill()
filter()
find()
findIndex()
forEach()
from()
includes()
indexOf()
isArray()
join()
keys()
length
lastIndexOf()
map()
pop()
prototype
push()
reduce()
reduceRight()
reverse()
shift()
slice()
some()
sort()
splice()
toString()
unshift()
valueOf()

JS Boolean
constructor
prototype
toString()
valueOf()

JS Classes
constructor()
extends
static
super

JS Date
constructor
getDate()
getDay()
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth()
getSeconds()
getTime()
getTimezoneOffset()
getUTCDate()
getUTCDay()
getUTCFullYear()
getUTCHours()
getUTCMilliseconds()
getUTCMinutes()
getUTCMonth()
getUTCSeconds()
now()
parse()
prototype
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
setUTCDate()
setUTCFullYear()
setUTCHours()
setUTCMilliseconds()
setUTCMinutes()
setUTCMonth()
setUTCSeconds()
toDateString()
toISOString()
toJSON()
toLocaleDateString()
toLocaleTimeString()
toLocaleString()
toString()
toTimeString()
toUTCString()
UTC()
valueOf()

JS Error
name
message

JS Global
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()
eval()
Infinity
isFinite()
isNaN()
NaN
Number()
parseFloat()
parseInt()
String()
undefined
unescape()

JS JSON
parse()
stringify()

JS Math
abs()
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
cbrt()
ceil()
clz32()
cos()
cosh()
E
exp()
expm1()
floor()
fround()
LN2
LN10
log()
log10()
log1p()
log2()
LOG2E
LOG10E
max()
min()
PI
pow()
random()
round()
sign()
sin()
sqrt()
SQRT1_2
SQRT2
tan()
tanh()
trunc()

JS Number
constructor
isFinite()
isInteger()
isNaN()
isSafeInteger()
MAX_VALUE
MIN_VALUE
NEGATIVE_INFINITY
NaN
POSITIVE_INFINITY
prototype
toExponential()
toFixed()
toLocaleString()
toPrecision()
toString()
valueOf()

JS OperatorsJS RegExp
constructor
compile()
exec()
g
global
i
ignoreCase
lastIndex
m
multiline
n+
n*
n?
n{X}
n{X,Y}
n{X,}
n$
^n
?=n
?!n
source
test()
toString()

(x|y)
.
\w
\W
\d
\D
\s
\S
\b
\B
\0
\n
\f
\r
\t
\v
\xxx
\xdd
\uxxxx

JS Statements
break
class
continue
debugger
do…while
for
for…in
for…of
function
if…else
return
switch
throw
try…catch
var
while

JS String
charAt()
charCodeAt()
concat()
constructor
endsWith()
fromCharCode()
includes()
indexOf()
lastIndexOf()
length
localeCompare()
match()
prototype
repeat()
replace()
search()
slice()
split()
startsWith()
substr()
substring()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
trim()
valueOf()

Бенчмаркинг

Будьте внимательны, если хотите точно протестировать производительность функции, которая зависит от процессора.

Например, сравним две функции, вычисляющие разницу между двумя датами: какая сработает быстрее?

Подобные вычисления, замеряющие производительность, также называют «бенчмарками» (benchmark).

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

Но какая функция быстрее?

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

Проведём измерения:

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

Замечательно, это уже что-то. Но до хорошего бенчмарка нам ещё далеко.

Представьте, что при выполнении процессор параллельно делал что-то ещё, также потребляющее ресурсы. А к началу выполнения он это уже завершил.

Достаточно реалистичный сценарий в современных многопроцессорных операционных системах.

В итоге у первого бенчмарка окажется меньше ресурсов процессора, чем у второго. Это может исказить результаты.

Для получения наиболее достоверных результатов тестирования производительности весь набор бенчмарков нужно запускать по нескольку раз.

Например, так:

Современные интерпретаторы JavaScript начинают применять продвинутые оптимизации только к «горячему коду», выполняющемуся несколько раз (незачем оптимизировать то, что редко выполняется). Так что в примере выше первые запуски не оптимизированы должным образом. Нелишним будет добавить предварительный запуск для «разогрева»:

Будьте осторожны с микробенчмарками

Современные интерпретаторы JavaScript выполняют множество оптимизаций. Они могут повлиять на результаты «искусственных тестов» по сравнению с «нормальным использованием», особенно если мы тестируем что-то очень маленькое, например, работу оператора или встроенной функции. Поэтому если хотите серьёзно понять производительность, пожалуйста, изучите, как работают интерпретаторы JavaScript. И тогда вам, вероятно, уже не понадобятся микробенчмарки.

Отличный набор статей о V8 можно найти на http://mrale.ph.

Luxon и Moment

относительное форматирование дат

Основные функциональные различия

  1. Отсчет месяцев в Luxon начинается с 1, а не с нуля как в Moment (и нативноv js-объекте Date).
  2. Локализация и временные зоны реализованы с помощью нативного Intl API (или полифила), а не встроены в библиотеку.
  3. Luxon имеет встроенные типы Duration и Interval.
  4. Luxon пока не поддерживает относительное форматирование дат.
  5. В Luxon так же пока нет метода humanize для представления длительности в «очеловеченном» стиле (к примеру, «a few seconds»).

Различия в стиле API

  • В методах API Luxon опционные параметры обычно располагаются последними.
  • Luxon имеет множество отдельных методов для создания объектов(например, fromISO), в отличие от Moment, который имеет для этого одну функцию, а тип объекта задается параметрами.
  • У Luxon очень строгие парсеры, в то время как у Moment они более либеральные, т.е. если формат входной строки будет отличаться от стандартного, то Luxon сразу выдаст ошибку, а Moment какие-то ошибки в формате попробует исправить.
  • Для получения значения внутренних полей Luxon использует геттеры (dt.year, dt.isValid), а не методы как Moment (m.year(), m.isValid()).
  • Luxon позволяет одним методом сразу установить все необходимые параметры dt.set({year: 2016, month: 4}), в Moment они задаются только по одному — цепочкой вызовов m.year(2016).month(4).
  • Длительность в Luxon — это отдельный класс верхнего уровня Duration.

Методы объекта FormData

С помощью указанных ниже методов мы можем изменять поля в объекте :

  • – добавляет к объекту поле с именем и значением ,
  • – добавляет поле, как будто в форме имеется элемент , третий аргумент устанавливает имя файла (не имя поля формы), как будто это имя из файловой системы пользователя,
  • – удаляет поле с заданным именем ,
  • – получает значение поля с именем ,
  • – если существует поле с именем , то возвращает , иначе

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

Ещё существует метод , его синтаксис такой же, как у . Разница в том, что удаляет все уже имеющиеся поля с именем и только затем добавляет новое. То есть этот метод гарантирует, что будет существовать только одно поле с именем , в остальном он аналогичен :

  • ,
  • .

Поля объекта можно перебирать, используя цикл :

Объект Date. Работа с датами

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

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

var currentDate = new Date();
document.write(currentDate);

В этом случае объект будет указывать на текущую дату компьютера:

Второй способ заключается в передаче в конструктор Date количества миллисекунд, которые прошли с начала эпохи Unix, то есть с 1 января 1970
года 00:00:00 GMT:

var myDate = new Date(1359270000000);
document.write(myDate); // Sun Jan 27 2013 10:00:00 GMT+0300 (RTZ 2 (зима))

Третий способ состоит в передаче в конструктор Date дня, месяца и года:

var myDate = new Date("27 March 2008");
// или так
// var myDate = new Date("3/27/2008");
document.write(myDate); // Thu Mar 27 2008 00:00:00 GMT+0300 (RTZ 2 (зима))

Если мы используем полное название месяца, то оно пишется в по-английски, если используем сокращенный вариант, тогда используется формат месяц/день/год.

Четвертый способ состоит в передаче в конструктор Date всех параметров даты и времени:

var myDate = new Date(2012,11,25,18,30,20,10); // Tue Dec 25 2012 18:30:20 GMT+0300 (RTZ 2 (зима))

В данном случае используются по порядку следующие параметры: .
При этом надо учитывать, что отсчет месяцев начинается с нуля, то есть январь — 0, а декабрь — 11.

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

Для получения различных компонентов даты применяется ряд методов:

  • getDate(): возвращает день месяца

  • getDay(): возвращает день недели (отсчет начинается с 0 — воскресенье, и последний день — 6 — суббота)

  • getMonth(): возвращает номер месяца (отсчет начинается с нуля, то есть месяц с номер 0 — январь)

  • getFullYear(): возвращает год

  • toDateString(): возвращает полную дату в виде строки

  • getHours(): возвращает час (от 0 до 23)

  • getMinutes(): возвращает минуты (от 0 до 59)

  • getSeconds(): возвращает секунды (от 0 до 59)

  • getMilliseconds(): возвращает миллисекунды (от 0 до 999)

  • toTimeString(): возвращает полное время в виде строки

Получим текущую дату:

var days = ;
var months = ;
			
var myDate = new Date();
var fullDate = "Сегодня: " + myDate.getDate() + " " + months + 
				" " + myDate.getFullYear() + ", " + days;
document.write(fullDate); // Сегодня: 18 Август 2015, Вторник

Перевести из числовых значений в более привычные названия для дней недели и месяцев используются массивы. Получив индекс дня недели ()
и индекс месяца () можно получить нужный элемент из массива.

Теперь получим текущее время:

var welcome;
var myDate = new Date();
var hour = myDate.getHours();
var minute = myDate.getMinutes();
var second = myDate.getSeconds();
if (minute < 10) {
	minute = "0" + minute;
}
if (second < 10) {
	second = "0" + second;
}
if (hour < 12) {
	welcome = "Доброе утро";
} else if (hour < 17) {
	welcome = "Добрый день";
} else {
	welcome = "Добрый вечер";
}
document.write(welcome + ", текущее время: " + hour + 
				":" + minute + ":" + second); // Добрый вечер, текущее время: 22:50:39

Установка даты и времени

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

  • setDate(): установка дня в дате

  • setMonth(): уставовка месяца (отсчет начинается с нуля, то есть месяц с номер 0 — январь)

  • setFullYear(): устанавливает год

  • setHours(): установка часа

  • setMinutes(): установка минут

  • setSeconds(): установка секунд

  • setMilliseconds(): установка миллисекунд

Установим дату:

var days = ;
var months = ;
			
var myDate = new Date();
myDate.setDate(15);
myDate.setMonth(6);
myDate.setYear(2013);

var fullDate = myDate.getDate() + " " + months + 
				" " + myDate.getFullYear() + ", " + days;
document.write(fullDate); // 15 Июль 2013, Понедельник

При установке значений мы можем передать величину, большую, чем максимальное допустимое значение. Например, установить для часа число 54:

myDate.setHour(54);

В этом случае значение часа будет равно 54 — 24 * 2 = 6, а оставшиеся часы будут составлять два дня (24 * 2), что прибавит к дате два дня. То же самое действует и
в отношении дней, минут, секунд, миллисекунд и месяцев.

НазадВперед

Другие примеры

Пример — Измерение времени выполнения:

Пример — Сравнение дат с помощью объекта Date:

Довольно простой и эффективный способ.

Пример — Текущее время:

Пример — Создание читаемой даты:

В случае с методом , мы добавили к результату 1. Это нужно потому, что этот метод возвращает месяц числом, начиная с 0. Такая вот особенность JavaScript.

Есть ещё одна проблема — форматирование. Инструкция выдаст результат, который будет подобен следующему:

Было бы здорово добавить недостающий ‘0’ перед секундами и месяцем, чтобы получить результат в удобном для нас виде:

Просто добавим условие в код, который генерирует финальную строку:

Этот код мы увидим в следующем, чуть более сложном примере.

Пример — Собственная функция форматирования даты:

После выполнения код будет отображать результат похожий на этот:

Это полный пример кода, который отображает дату и время в JavaScript. Он также демонстрирует, как действуют методы объекта Date.

Итого

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

Мы можем создать такой объект уже с данными, передав в конструктор HTML-форму – , или же можно создать объект вообще без формы и затем добавить к нему поля с помощью методов:

Отметим две особенности:

  1. Метод удаляет предыдущие поля с таким же именем, а – нет. В этом их единственное отличие.
  2. Чтобы послать файл, нужно использовать синтаксис с тремя аргументами, в качестве третьего как раз указывается имя файла, которое обычно, при , берётся из файловой системы.

Другие методы:

Вот и всё!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector