Какое число не преобразовывается в дату программист
Перейти к содержимому

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

  • автор:

Алгоритм преобразования числа в дату

В json приходят данные, в которых дата представлена в виде числа, например 1583960400000 (содержит значение даты 12.03.2020). По какому алгоритму это число преобразовать в дату 12.03.2020?

Отслеживать
задан 17 мар 2020 в 5:09
106 6 6 бронзовых знаков
new Date(158396040000)
17 мар 2020 в 5:14
на Wiki расписан алгоритм
17 мар 2020 в 5:31

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • дата
  • числа
  • преобразование-типов
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

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

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.12.8.2394

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Синтаксический анализ строк даты и времени в .NET

Чтобы анализировать строки для преобразования их в объекты DateTime, нужно указать, как значения даты и времени представлены в текстовом формате. Для различных языков и региональных параметров значения дня, месяца и года приводятся в разном порядке. В некоторых представлениях времени используются 24-часовые часы, в других — «AM» и «PM». Некоторым приложениям требуется только дата. В других — только время. Остальные должны указывать как дату, так и время. Методы преобразования строк в объекты DateTime позволяют предоставлять подробные сведения о требуемых форматах и элементах дат и времени, которые необходимы для вашего приложения. Есть три подзадачи для правильного преобразования текста в DateTime:

  1. Укажите требуемый формат текста, представляющего дату и время.
  2. Вы можете указать язык и региональные параметры для формата даты и времени.
  3. Вы можете указать, как отсутствующие компоненты в текстовом представлении задаются в дату и время.

Методы Parse и TryParse позволяют преобразовать много стандартных представлений даты и времени. Методы ParseExactи TryParseExact позволяют преобразовать строковое представление, соответствующее шаблону, указанному в строке формата даты и времени. Дополнительные сведения см. в статьях о стандартных строках формата даты и времени и настраиваемых строках формата даты и времени.

Текущий объект DateTimeFormatInfo обеспечивает более точный контроль над тем, как текст должен интерпретироваться в качестве даты и времени. DateTimeFormatInfo Свойства объекта описывают разделители даты и времени, имена месяцев, дней и эпох, а также формат для обозначений «AM» и «PM». Объект , CultureInfo возвращаемый параметром CultureInfo.CurrentCulture , имеет CultureInfo.DateTimeFormat свойство , представляющее текущий язык и региональные параметры. Если требуется задать определенные язык и региональные параметры или настраиваемые параметры, укажите для метода анализа параметр IFormatProvider. Для параметра IFormatProvider следует указать объект CultureInfo, представляющий язык и региональные параметры, или объект DateTimeFormatInfo.

Текст, представляющий дату или время, может отсутствовать некоторые сведения. Например, большинство пользователей будет считать, что дата «12 марта» относится к текущему году. Аналогичным образом, «март 2018 г.» представляет месяц март 2018 года. Текст, представляющий время, часто содержит только часы, минуты и обозначение AM/PM. При помощи методов анализа эти отсутствующие данные обрабатываются с использованием обоснованных значений по умолчанию:

  • если указано только время, в части даты используется текущая дата;
  • если указана только дата, в части времени задается полночь;
  • если в дате не указан год, используется текущий год;
  • Если день месяца не указан, используется первый день месяца.

Если в строке есть дата, она должна включать месяц и день или год. Если указано время, значение должно содержать час и минуты или обозначение AM либо PM.

Чтобы переопределить эти значения по умолчанию, можно задать константу NoCurrentDateDefault. Если вы используете эту константу, для всех отсутствующих параметров года, месяца или дня устанавливается значение 1 . Это демонстрирует последний пример, в котором применяется Parse.

Помимо компонента даты и времени строковое представление даты и времени может содержать смещение, которое указывает, насколько время отличается от универсального синхронизированного времени (UTC). Например, строка «14/02/2007 5:32:00 -7: 00» определяет время, которое на семь часов меньше, чем UTC. Если в строковом представлении времени не задано смещение, то синтаксический анализ возвращает объект DateTime, свойство Kind которого имеет значение DateTimeKind.Unspecified. Если указано смещение, при синтаксическом анализе возвращается объект со свойством DateTimeKind , равным DateTimeKind.Local. Его значение также корректируется в соответствии с местным часовой поясом компьютера. Это поведение можно изменить, указав для метода анализа значение DateTimeStyles.

Поставщик формата также используется для интерпретации неоднозначных числовых дат. Неясно, какие компоненты даты, представленные строкой «02/03/04», являются месяцем, днем и годом. Такие компоненты интерпретируются согласно их порядку расположения в схожих форматах даты в поставщике формата.

Parse

Ниже приведен пример использования метода DateTime.Parse для преобразования string в DateTime. В этом примере используются язык и региональные параметры, связанные с текущим потоком. Если объект , связанный CultureInfo с текущим языком FormatException и региональными параметрами, не может проанализировать входную строку, создается исключение .

Все примеры C# в этой статье выполняются в браузере. Нажмите кнопку Выполнить, чтобы просмотреть выходные данные. Вы можете поэкспериментировать, изменяя их значения.

Эти примеры для C# и Visual Basic см. в репозитории с документацией GitHub.

string dateInput = "Jan 1, 2009"; var parsedDate = DateTime.Parse(dateInput); Console.WriteLine(parsedDate); // Displays the following output on a system whose culture is en-US: // 1/1/2009 00:00:00 
Dim MyString As String = "Jan 1, 2009" Dim MyDateTime As DateTime = DateTime.Parse(MyString) Console.WriteLine(MyDateTime) ' Displays the following output on a system whose culture is en-US: ' 1/1/2009 00:00:00 

Кроме того, вы можете явно определить язык и региональные параметры, соглашения о форматировании для которых используются при анализе строки. Укажите один из стандартных объектов DateTimeFormatInfo, возвращенных свойством CultureInfo.DateTimeFormat. В приведенном ниже примере поставщик формата используется для анализа строки на немецком языке в DateTime. Для представления языка и региональных параметров de-DE создается CultureInfo. Этот объект CultureInfo обеспечивает успешный анализ определенной строки. Этот процесс исключает любой параметр в .CurrentCultureCurrentThread

var cultureInfo = new CultureInfo("de-DE"); string dateString = "12 Juni 2008"; var dateTime = DateTime.Parse(dateString, cultureInfo); Console.WriteLine(dateTime); // The example displays the following output: // 6/12/2008 00:00:00 
Dim MyCultureInfo As New CultureInfo("de-DE") Dim MyString As String = "12 Juni 2008" Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo) Console.WriteLine(MyDateTime) ' The example displays the following output: ' 6/12/2008 00:00:00 

Однако можно использовать перегрузки метода для Parse указания настраиваемых поставщиков форматов. Метод Parse не поддерживает синтаксический анализ нестандартных форматов. Вместо этого используйте метод ParseExact для анализа даты и времени, выраженных в нестандартном формате.

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

var cultureInfo = new CultureInfo("de-DE"); string dateString = "12 Juni 2008"; var dateTime = DateTime.Parse(dateString, cultureInfo, DateTimeStyles.NoCurrentDateDefault); Console.WriteLine(dateTime); // The example displays the following output if the current culture is en-US: // 6/12/2008 00:00:00 
Dim MyCultureInfo As New CultureInfo("de-DE") Dim MyString As String = "12 Juni 2008" Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo, DateTimeStyles.NoCurrentDateDefault) Console.WriteLine(MyDateTime) ' The example displays the following output if the current culture is en-US: ' 6/12/2008 00:00:00 

ParseExact

Метод DateTime.ParseExact позволяет преобразовать строку в объект DateTime, если она соответствует одному из указанных шаблонов строк. При передаче в этот метод строки, которая не является одной из указанных форм, FormatException возникает исключение . Можно задать один из стандартных описателей формата даты и времени или сочетание пользовательских описателей формата. Используя настраиваемые описатели формата, можно создать пользовательскую строку распознавания. Описание описателей см. в статьях о стандартных строках формата даты и времени и настраиваемых строках формата даты и времени.

В приведенном ниже примере в метод DateTime.ParseExact передается переназначенный для анализа строковый объект. Затем следует описатель формата, который сопровождается объектом CultureInfo. С помощью этого метода ParseExact можно анализировать только строки, соответствующие шаблону полной даты для языка и региональных параметров en-US .

var cultureInfo = new CultureInfo("en-US"); string[] dateStrings = < " Friday, April 10, 2009", "Friday, April 10, 2009" >; foreach (string dateString in dateStrings) < try < var dateTime = DateTime.ParseExact(dateString, "D", cultureInfo); Console.WriteLine(dateTime); >catch (FormatException) < Console.WriteLine("Unable to parse ''", dateString); > > // The example displays the following output: // Unable to parse ' Friday, April 10, 2009' // 4/10/2009 00:00:00 
Dim MyCultureInfo As New CultureInfo("en-US") Dim MyString() As String = For Each dateString As String In MyString Try Dim MyDateTime As DateTime = DateTime.ParseExact(dateString, "D", MyCultureInfo) Console.WriteLine(MyDateTime) Catch e As FormatException Console.WriteLine("Unable to parse ''", dateString) End Try Next ' The example displays the following output: ' Unable to parse ' Friday, April 10, 2009' ' 4/10/2009 00:00:00 

При каждой перегрузке методов Parse и ParseExact также используется параметр IFormatProvider, который предоставляет сведения о языке и региональных параметрах для форматирования строки. Объект IFormatProvider — это CultureInfo объект, представляющий стандартный язык и региональные параметры, или DateTimeFormatInfo объект, возвращаемый свойством CultureInfo.DateTimeFormat . Кроме того, в методе ParseExact используется дополнительная строка или аргумент массива строк для определения одного или нескольких настраиваемых форматов даты и времени.

См. также

  • Анализ строк
  • Типы форматирования
  • Преобразование типов в .NET
  • Стандартные форматы даты и времени
  • Строки настраиваемых форматов даты и времени

Совместная работа с нами на GitHub

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

Целочисленные типы (справочник по C#)

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

Характеристики целочисленных типов

C# поддерживает следующие предварительно определенные целочисленные типы:

Ключевое слово или тип C# Диапазон Size Тип .NET
sbyte От -128 до 127 8-разрядное целое число со знаком System.SByte
byte От 0 до 255 8-разрядное целое число без знака System.Byte
short От −32 768 до 32 767 16-разрядное целое число со знаком System.Int16
ushort От 0 до 65 535 16-разрядное целое число без знака System.UInt16
int От −2 147 483 648 до 2 147 483 647 32-разрядное целое число со знаком System.Int32
uint От 0 до 4 294 967 295 32-разрядное целое число без знака System.UInt32
long От −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 64-разрядное целое число со знаком System.Int64
ulong От 0 до 18 446 744 073 709 551 615 64-разрядное целое число без знака System.UInt64
nint Зависит от платформы (вычисляемой во время выполнения) 32- или 64-разрядное целое число со знаком System.IntPtr
nuint Зависит от платформы (вычисляемой во время выполнения) 32- или 64-разрядное целое число без знака System.UIntPtr

Во всех строках таблицы, кроме двух последних, каждое ключевое слово типа C# из крайнего левого столбца является псевдонимом для соответствующего типа .NET. Ключевое слово и имя типа .NET являются взаимозаменяемыми. Например, следующие объявления объявляют переменные одного типа:

int a = 123; System.Int32 b = 123; 

Типы nint и nuint в последних двух строках таблицы являются целыми числами собственного размера. Для определения целых чисел собственного размера можно использовать nint и nuint ключевое слово. Эти целые числа будут 32-разрядными при использовании в 32-битных процессах и 64-разрядными при использовании в 64-битных процессах. Их можно использовать для сценариев взаимодействия, с низкоуровневыми библиотеками и для оптимизации производительности в сценариях, где часто выполняются математические операции с целыми числами.

Целочисленные типы собственного размера представляются внутренне как типы .NET System.IntPtr и System.UIntPtr. Начиная с C# 11, и nint nuint типы являются псевдонимами для базовых типов.

По умолчанию все целочисленные типы имеют значение 0 .

Каждый из целочисленных типов имеет MinValue и MaxValue свойства, обеспечивающие минимальное и максимальное значение этого типа. Эти свойства являются константами во время компиляции, за исключением случаев собственных типов ( nint и nuint ). MaxValue Свойства MinValue вычисляются во время выполнения для собственных типов. Размеры этих типов зависят от параметров процесса.

Используйте структуру System.Numerics.BigInteger, чтобы представить целое число со знаком без верхней и нижней границ.

Целочисленные литералы

Целочисленные литералы могут быть:

  • десятичным числом: без префикса;
  • шестнадцатеричным числом: с префиксом 0x или 0X ;
  • binary: с 0b префиксом или 0B префиксом

В приведенном ниже коде показан пример каждого из них.

var decimalLiteral = 42; var hexLiteral = 0x2A; var binaryLiteral = 0b_0010_1010; 

В предыдущем примере также показано использование _ в качестве разделителя цифр. Цифровой разделитель можно использовать со всеми видами числовых литералов.

Тип целочисленного литерала определяется его суффиксом следующим образом:

    Если литерал не имеет суффикса, его типом будет первый из следующих типов, в котором может быть представлено его значение: int , uint , long , ulong .

Примечание. Литералы интерпретируется как положительные значения. Например, литерал 0xFF_FF_FF_FF представляет число 4294967295 типа uint , хотя он имеет то же битовое представление, что и число -1 типа int . Если вам требуется значение определенного типа, приведите литерал к этому типу. Используйте оператор unchecked , если представить значение литерала в целевом типе невозможно. Например, unchecked((int)0xFF_FF_FF_FF) выдает -1 .

Примечание. Строчную букву l можно использовать в качестве суффикса. Однако при этом выдается предупреждение компилятора, так как букву l можно перепутать с цифрой 1 . Для ясности используйте L .

Если значение, представленное целочисленным литералом, превышает UInt64.MaxValue, происходит ошибка компиляции CS1021.

Если определенный тип целочисленного литерала — int , а значение, представленное литералом, находится в диапазоне целевого типа, значение можно неявно преобразовать в sbyte , byte , short , ushort , uint , ulong , nint или nuint :

byte a = 17; byte b = 300; // CS0031: Constant value '300' cannot be converted to a 'byte' 

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

Можно также использовать приведение для преобразования значения, представленного целочисленным литералом, в тип, отличный от определенного типа литерала:

var signedByte = (sbyte)42; var longVariable = (long)42; 

Преобразования

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

Целые числа собственного размера

Типы целых чисел собственного размера имеют особое поведение, так как хранилище определяется естественным целым числом на целевом компьютере.

    Чтобы узнать размер целого числа собственного размера во время выполнения, используйте sizeof() . Но код должен компилироваться в контексте unsafe. Например:

Console.WriteLine($"size of nint = "); Console.WriteLine($"size of nuint = "); // output when run in a 64-bit process //size of nint = 8 //size of nuint = 8 // output when run in a 32-bit process //size of nint = 4 //size of nuint = 4 
Console.WriteLine($"nint.MinValue = "); Console.WriteLine($"nint.MaxValue = "); Console.WriteLine($"nuint.MinValue = "); Console.WriteLine($"nuint.MaxValue = "); // output when run in a 64-bit process //nint.MinValue = -9223372036854775808 //nint.MaxValue = 9223372036854775807 //nuint.MinValue = 0 //nuint.MaxValue = 18446744073709551615 // output when run in a 32-bit process //nint.MinValue = -2147483648 //nint.MaxValue = 2147483647 //nuint.MinValue = 0 //nuint.MaxValue = 4294967295 
  • для nint : Int32.MinValue–Int32.MaxValue.
  • для nuint : UInt32.MinValue–UInt32.MaxValue.
nint a = 42 nint a = (nint)42; 

Спецификация языка C#

Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#:

  • Целочисленные типы
  • Целочисленные литералы
  • Целочисленные типы собственного размера
  • C# 11 — числовой IntPtr и UIntPtr

См. также

  • справочник по C#
  • Типы значений
  • Типы с плавающей запятой
  • Строки стандартных числовых форматов
  • Числовые значения в .NET

Совместная работа с нами на GitHub

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

Числа и даты

Данный раздел представляет собой введение в работу с числами и датами в JavaScript.

Числа

В JavaScript все числа являются числами двойной точности в соответствии с 64-битным двоичным форматом IEEE 754 (т.е. числами, принадлежащими диапазону между -(253 -1) и 253 -1). Целые числа не рассматриваются как отдельный тип чисел. В дополнение к числам с плавающей запятой, к числовому типу данных относятся также три символьные величины: + бесконечность , — бесконечность , и NaN (не-число). В разделе типы и структуры данных в JavaScript числовой тип данных описан в контексте с другими примитивными типами в JavaScript.

Вы можете использовать четыре типа числовых литералов: десятичный, двоичный, восьмеричный и шестнадцатеричный.

Десятичные числа

1234567890; 42; // Будьте внимательны при использование нулей в начале чисел: 0888; // 888 обрабатывается как десятичное 0777; // обрабатывается как восьмеричное в нестрогой форме (511 в десятичной) 

Обратите внимание, что десятичные литералы могут начинаться с нуля ( 0 ) за которым следует другая десятичная цифра, но если следующая за нулём цифра меньше 8, то число обрабатывается как восьмеричное.

Двоичные числа

Синтаксис двоичных чисел использует ведущий 0 за которым следует латинская буква «B» в верхнем или нижнем регистре ( 0b or 0B ). Если цифры после 0b не являются 0 или 1, то будет сгенерированно SyntaxError с сообщением: «Missing binary digits after 0b».

var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648 var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040 var FLT_MANTISSA = 0b00000000011111111111111111111111; // 8388607 

Восьмеричные числа

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

var n = 0755; // 493 var m = 0644; // 420 

Шестнадцатеричные числа

Синтаксис шестнадцатеричных чисел использует ведущий 0 за которым следует латинская буква «X» в верхнем или нижнем регистре ( 0x or 0X ). Если цифры после 0x не входят в диапазон (0123456789ABCDEF), то будет сгенерированно SyntaxError с сообщением: «Identifier starts immediately after numeric literal».

0xfffffffffffffffff; // 295147905179352830000 0x123456789abcdef; // 81985529216486900 0xa; // 10 

Объект Number

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

var biggestNum = Number.MAX_VALUE; var smallestNum = Number.MIN_VALUE; var infiniteNum = Number.POSITIVE_INFINITY; var negInfiniteNum = Number.NEGATIVE_INFINITY; var notANum = Number.NaN; 

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

В следующей таблице приведён список свойств объекта Number .

Свойство Описание
Number.MAX_VALUE Наибольшее число из возможных для представления
Number.MIN_VALUE Наименьшее число из возможных для представления
Number.NaN Специальное «Не числовое» («not a number») значение
Number.NEGATIVE_INFINITY Специальное значение «Минус бесконечность»; возвращается при переполнении
Number.POSITIVE_INFINITY Специальное значение «Плюс бесконечность»; возвращается при переполнении
Number.EPSILON Разница между единицей и наименьшим значением, большим единицы, которое может быть представлено типом Number .
Number.MIN_SAFE_INTEGER Минимальное целое, безопасное число в JavaScript.
Number.MAX_SAFE_INTEGER Максимальное целое, безопасное число в JavaScript.
Метод Описание
Number.parseFloat() Принимает строку как аргумент, и возвращает числовое значение с плавающей точкой, которое удалось распознать. Тоже самое что и глобальная функция parseFloat() .
Number.parseInt() Принимает строку как аргумент, и возвращает целочисленное значение в заданной системе исчисления, которое удалось распознать. Тоже самое что и глобальная функция parseInt() .
Number.isFinite() Определяет, является ли число, переданное в качестве аргумента, конечным.
Number.isInteger() Определяет, является ли число, переданное в качестве аргумента, целым.
Number.isNaN() Определяет, является ли число, переданное в качестве аргумента, NaN (не числом). Аналогичный, но более надёжный метод чем глобальная функция isNaN() .
Number.isSafeInteger() Определяет, является ли .число, переданное в качестве аргумента, целым и безопасным.

Прототип Number предоставляет ряд методов, для получения значения числа в различных форматах. В следующей таблице перечислены методы, доступные через Number.prototype .

Метод Описание
toExponential() Возвращает строку, представляющую число в экспоненциальном представлении.
toFixed() Возвращает строку, представляющую число с заданным количеством разрядов после запятой.
toPrecision() Возвращает строку, представляющую число с указанной точностью.

Объект Math

Встроенный глобальный объект Math содержит свойства и методы для математических констант и функций. Например, свойство объекта Math PI содержит значение математической константы «Пи» (3.141. ), которые вы можете использовать в программе как

Подобным образом, математические функции являются методами объекта Math . Они включают тригонометрические, логорифмические, экспоненциальные и другие функции. Например, если вы хотите использовать тригонометрическую функцию синуса, вы напишете следующий код

.sin(1.56); 

Заметьте, что все тригонометрические методы объекта Math принимают аргументы в радианах.

В следующей таблице перечислены методы объекта Math .

Метод Описание
abs() Возвращает абсолютное значение (модуль) аргумента
sin() , cos() , tan() Стандартные тригонометрические функции; принимают аргументы в радианах
asin() , acos() , atan() , atan2() Обратные тригонометрические функции; возвращают значения в радианах
sinh() , cosh() , tanh() Гиперболические тригонометрические функции; принимают аргументы в гиперболических углах
asinh() , acosh() , atanh() Обратные гиперболические тригонометрические функции; возвращают значения в гиперболических углах
pow() , exp() , expm1() , log10() , log1p() , log2() Экспоненциальные и логорифмические функции
floor() , ceil() Возвращают наибольшее/наименьшее целое, которое меньше/больше или равно входному значению
min() , max() Возвращают наибольшее или наименьшее (соответственно) из входных числовых значений, перечисленных через запятую
random() Возвращает случайное число от 0 до 1
round() , fround() , trunc() , Функции округления и отсечения дробной части
sqrt() , cbrt() , hypot() Корень квадратный, корень кубический, корень квадратный из суммы квадратов аргументов
sign() Знак числа, показывает является ли входное число позитивным, негативным или равным нулю
clz32() , imul() Количество первых нулевых бит в 32-битном двоичном представлении. Возвращает результат Си-подобного 32-битного целочисленного умножения двух аргументов.

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

Объект Date

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

JavaScript оперирует датами во многом аналогично языку Java. Для работы с датой эти два языка имеют множество одинаковых методов, и оба они хранят даты как количество миллисекунд, прошедших с 00:00:00 1 Января 1970 года.

Период значений, которые может принимать Data, простирается от -100 000 000 до100 000 000 дней, относительно 1 Января 1970 года.

Чтобы создать свой экземпляр объекта Date используйте такой код :

var dateObjectName = new Date([parameters]); 

где dateObjectName это имя переменной, которой будет присвоено созданное значение с типом Date ; вместо этой переменной, присвоить созданное значение можно как свойство, любому существующему объекту.

Вызов Date как функции, без ключевого слова new, возвращает текущую дату и время в виде текстовой строки.

Содержимым блока parameters в коде представленном выше, могут выступать любая из следующих конструкций:

  • Пусто: создаёт текущую дату и время. Пример: today = new Date(); .
  • Текстовая строка, содержащая дату и время в следующем формате: «Месяц день, год часы:минуты:секунды». Например: var Xmas95 = new Date(«December 25, 1995 13:30:00») . Если не указать секунды, минуты или часы, то их значение будет принято за 0.
  • Набор целочисленных значений для года, месяца и дня. Например: var Xmas95 = new Date(1995, 11, 25) .
  • Набор целочисленных значений для года, месяца, дня, часов, минут и секунд. Например: var Xmas95 = new Date(1995, 11, 25, 9, 30, 0); .

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

new Date().toLocaleString('ru', < day: 'numeric', month: 'long', year: 'numeric' >); // текущая дата в формате: '10 января 2019 г.'

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

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

  • «set» методы, служат для установки параметров объекта Date .
  • «get» методы, служат для получения параметров объекта Date .
  • «to» методы, служат для получения значения объекта Date в текстовом виде.
  • «parse» и UTC методы, служат для распознавания дат и времени из текстового формата.

При помощи методов групп «get» и»set», вы можете получить и установить значения секунд, минут, часов, дня месяца, дня недели, месяца и года по отдельности. Отдельно выделим метод getDay , который возвращает день недели, однако соответствующего ему метода setDay не существует, потому-что день недели высчитывается автоматически. Все эти методы используют в своей работе целочисленные значения по следующим правилам:

  • Секунды и минуты: от 0 до 59
  • Часы: от 0 до 23
  • Дни недели: от 0 (Воскресенье) до 6 (Суббота)
  • Дни месяца: от 1 до 31
  • Месяцы: от 0 (Январь) до 11 (Декабрь)
  • Год: год относительно 1900 года.

Например, предположим, что вы определили дату следующим образом:

var Xmas95 = new Date("December 25, 1995"); 

Тогда Xmas95.getMonth() вернёт 11, а Xmas95.getFullYear() вернёт 1995.

Методы getTime и setTime могут быть полезны при сравнении дат. Метод getTime возвращает количество миллисекунд, прошедших с 00:00:00 1 Января, 1970 года.

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

var today = new Date(); // Получаем текущую дату var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Устанавливаем месяц и день на конец года endYear.setFullYear(today.getFullYear()); // Устанавливаем текущий год var msPerDay = 24 * 60 * 60 * 1000; // Количество миллисекунд в одних сутках var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay; var daysLeft = Math.round(daysLeft); // возвращает количество дней, оставшихся до конца года 

Этот пример создаёт объект Date названный today, который содержит текущую дату и время . Затем, создаётся вспомогательный Date объект, названный endYear, которому устанавливаются значения, указывающие на конец года. После этого, при помощи рассчитанного количества миллисекунд в сутках, вычисляется количество дней между today и endYear , При этом используются метод getTime и округление, для получения количества полных дней.

Метод parse полезен для присвоения значений существующим объектам Date из текстового формата. Например, следующий код использует методы parse и setTime чтобы установить значение переменной IPOdate :

var IPOdate = new Date(); IPOdate.setTime(Date.parse("Aug 9, 1995")); 

Пример

В следующем примере приведена функция JSClock(), которая возвращает время в формате электронных часов:

function JSClock()  var time = new Date(); var hour = time.getHours(); var minute = time.getMinutes(); var second = time.getSeconds(); var temp = "" + (hour > 12 ? hour - 12 : hour); if (hour == 0) temp = "12"; temp += (minute  10 ? ":0" : ":") + minute; temp += (second  10 ? ":0" : ":") + second; temp += hour >= 12 ? " P.M." : " A.M."; return temp; > 

Первым делом, функция JSClock создаёт новый объект Date , названный time ; так как объект создаётся баз параметров, переменная time содержит текущую дату и время. Затем вызываются методы getHours , getMinutes и getSeconds , чтобы установить значения переменным hour , minute и second .

Следующие четыре выражения строят текстовую строку на основе time. Первое из них создаёт переменную temp , присваивая ей значение при помощи условия; Если hour больше чем 12, то ( hour — 12 ), иначе просто hour. В случае же, когда hour равно 0, берётся фиксированное значение «12».

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

В завершение всего, последнее условное выражение добавляет строку «P.M.» к переменной temp если hour равно или больше 12, иначе, добавляется строка «A.M.».

  • « Предыдущая статья
  • Следующая статья »

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 7 авг. 2023 г. by MDN contributors.

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

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