Класс date() модуля datetime в python

Работа с датой current

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

Во втором применяется метод  класса date:

Класс datetime.date позволяет получать календарную дату. Также следует добавить, что его атрибуты (year, month, day) бывают доступны и отдельно, как в примере с datetime.

Тут все понятно и просто. Но есть нюанс: если надо получить день недели, прописывают . Дело в том, что нумерация дней недели начинается с нуля, то есть понедельник — это 0, вторник — 1, среда — 2 и так далее. Если такое положение вещей устраивает, +1 можно и не добавлять.

А как поступить, если надо отобразить текущее время отдельно от даты?

Типы данных даты и времениDate and Time data types

Типы данных даты и времени Transact-SQLTransact-SQL перечислены в следующей таблице:The Transact-SQLTransact-SQL date and time data types are listed in the following table:

Тип данныхData type ФорматFormat ДиапазонRange ТочностьAccuracy Объем памяти (в байтах)Storage size (bytes) Определяемая пользователем точность в долях секундыUser-defined fractional second precision Смещение часового поясаTime zone offset
timetime чч:мм:ссhh:mm:ss От 00:00:00.0000000 до 23:59:59.999999900:00:00.0000000 through 23:59:59.9999999 100 наносекунд100 nanoseconds от 3 до 53 to 5 ДаYes нетNo
datedate ГГГГ-ММ-ДДYYYY-MM-DD От 0001-01-01 до 31.12.990001-01-01 through 9999-12-31 1 день1 day 33 нетNo нетNo
smalldatetimesmalldatetime ГГГГ-ММ-ДД чч:мм:ссYYYY-MM-DD hh:mm:ss От 01.01.1900 до 06.06.20791900-01-01 through 2079-06-06 1 минута1 minute 44 нетNo нетNo
datetimedatetime ГГГГ-ММ-ДД чч:мм:ссYYYY-MM-DD hh:mm:ss От 01.01.1753 до 31.12.99991753-01-01 through 9999-12-31 0,00333 секунды0.00333 second 88 нетNo нетNo
datetime2datetime2 ГГГГ-ММ-ДД чч:мм:ссYYYY-MM-DD hh:mm:ss От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.99999990001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999 100 наносекунд100 nanoseconds От 6 до 86 to 8 ДаYes нетNo
datetimeoffsetdatetimeoffset ГГГГ-ММ-ДД чч:мм:сс чч:ммYYYY-MM-DD hh:mm:ss hh:mm От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 (время в формате UTC)0001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999 (in UTC) 100 наносекунд100 nanoseconds От 8 до 108 to 10 ДаYes ДаYes

Примечание

Тип данных Transact-SQLTransact-SQL rowversion не относится к типам данных даты и времени.The Transact-SQLTransact-SQL rowversion data type is not a date or time data type. Тип данных timestamp является устаревшим синонимом rowversion.timestamp is a deprecated synonym for rowversion.

Класс datetime.date

Объект представляет дату (год, месяц и день).

Пример 3: объект date для представления даты.

import datetime

d = datetime.date(2020, 6, 29) 
print(d)

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

В приведенном выше примере   является конструктором класса . Конструктор принимает три аргумента: год, месяц и день.

Переменная — это объект .

Вы можете создавать объекты класса , предварительно импортировав модуль datetime, а можете импортировать только класс из модуля datetime. Вот как это делается:

from datetime import date

a = date(2020, 6, 29)
print(a) # 2020-06-29

Пример 4: Получение текущей даты.

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

from datetime import date

today = date.today()

print("Current date =", today)

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

Пример 5: получение даты из метки времени (timestamp).

Мы также можем создавать объекты из метки времени (timestamp). Термин timestamp употребляется для обозначения POSIX-времени — количества секунд, прошедшего с 00:00:00 UTC 1 января, 1970 года. Вы можете преобразовать метку времени в дату при помощи метода .

from datetime import date

timestamp = date.fromtimestamp(1326244364)
print("Date =", timestamp)

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

Пример 6: вывод текущего года, месяца и дня.

Мы легко можем получить год, месяц, день, день недели и т. д. из объекта . Вот как это делается:

from datetime import date

today = date.today() 

print("Current year:", today.year)
print("Current month:", today.month)
print("Current day:", today.day)

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

Python DateTime string to Unix timestamp

Now, we can see DateTime string to Unix timestamp in python.

  • In this example, I have imported a module called datetime and declared a variable as date_string.
  • Here, I have assigned date_string = “2/11/2021, 04:5:8” here the date and time are given in string format.
  • Here 2 is the month, 11 is the day, 2021 is the year, 04 is the hour, 5 is the minute, and 8 is the second.
  • The strptime() is the function of datetime module it is used to parse the string to datetime and time objects. The timestamp() method returns the local time.

Example:

The below screenshot shows the datetime string form is converted into Unix timestamp as the output.

Python DateTime string to Unix timestamp

Обратная совместимость для клиентов нижнего уровняBackward Compatibility for Down-level Clients

Некоторые клиенты нижнего уровня не поддерживают типы данных time, date, datetime2 и datetimeoffset.Some down-level clients do not support the time, date, datetime2 and datetimeoffset data types. В следующей таблице показано сопоставление типов экземпляра более высокого уровня SQL ServerSQL Server и клиентов низкого уровня.The following table shows the type mapping between an up-level instance of SQL ServerSQL Server and down-level clients.

Тип данных SQL ServerSQL ServerSQL ServerSQL Server data type Формат строкового литерала по умолчанию, передаваемый клиенту низкого уровняDefault string literal format passed to down-level client ODBC низкого уровняDown-level ODBC OLEDB низкого уровняDown-level OLEDB JDBC низкого уровняDown-level JDBC SQLCLIENT низкого уровняDown-level SQLCLIENT
timetime чч:мм:ссhh:mm:ss SQL_WVARCHAR или SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR или DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String или SqStringString or SqString
datedate ГГГГ-ММ-ДДYYYY-MM-DD SQL_WVARCHAR или SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR или DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String или SqStringString or SqString
datetime2datetime2 ГГГГ-ММ-ДД чч:мм:ссYYYY-MM-DD hh:mm:ss SQL_WVARCHAR или SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR или DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String или SqStringString or SqString
datetimeoffsetdatetimeoffset ГГГГ-ММ-ДД чч:мм:сс чч:ммYYYY-MM-DD hh:mm:ss hh:mm SQL_WVARCHAR или SQL_VARCHARSQL_WVARCHAR or SQL_VARCHAR DBTYPE_WSTR или DBTYPE_STRDBTYPE_WSTRor DBTYPE_STR Java.sql.StringJava.sql.String String или SqStringString or SqString

Обработка часового пояса в Python

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

from datetime import datetime
import pytz

local = datetime.now()
print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S"))


tz_NY = pytz.timezone('America/New_York') 
datetime_NY = datetime.now(tz_NY)
print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S"))

tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))

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

Здесь и — это объекты , содержащие текущую дату и время соответствующего часового пояса.

Компоненты времени

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

time_struct.py
import time
def show_struct(s):
    print('  tm_year :', s.tm_year)
    print('  tm_mon  :', s.tm_mon)
    print('  tm_mday :', s.tm_mday)
    print('  tm_hour :', s.tm_hour)
    print('  tm_min  :', s.tm_min)
    print('  tm_sec  :', s.tm_sec)
    print('  tm_wday :', s.tm_wday)
    print('  tm_yday :', s.tm_yday)
    print('  tm_isdst:', s.tm_isdst)
print('gmtime:')
show_struct(time.gmtime())
print('nlocaltime:')
show_struct(time.localtime())
print('nmktime:', time.mktime(time.localtime()))

Функция gmtime(), которую предоставляет модуль time Python  возвращает текущее время в UTC. Localtime() возвращает текущее время с использованием текущего часового пояса. Mktime() принимает struct_time и преобразует его в формат с плавающей запятой:

$ python3 time_struct.py
gmtime:
  tm_year : 2016
  tm_mon  : 8
  tm_mday : 14
  tm_hour : 18
  tm_min  : 10
  tm_sec  : 42
  tm_wday : 6
  tm_yday : 227
  tm_isdst: 0
localtime:
  tm_year : 2016
  tm_mon  : 8
  tm_mday : 14
  tm_hour : 14
  tm_min  : 10
  tm_sec  : 42
  tm_wday : 6
  tm_yday : 227
  tm_isdst: 1
mktime: 1471198242.0

Формат и порядок датыDate format and date order

То, как SQL Server анализирует значения даты и времени, зависит не только от версии системы типов и версии сервера, но также от параметров языка и формата по умолчанию для сервера.How SQL Server parses date and time values depends not only on the type system version and server version, but also on the server’s default language and format settings. Строка даты, которая подходит для форматов даты одного языка, может быть нераспознаваемой, если запрос выполняется подключением, в котором используются другие язык и формат даты.A date string that works for the date formats of one language might be unrecognizable if the query is executed by a connection that uses a different language and date format setting.

Инструкция Transact-SQL SET LANGUAGE неявно устанавливает DATEFORMAT, который определяет порядок частей даты.The Transact-SQL SET LANGUAGE statement implicitly sets the DATEFORMAT that determines the order of the date parts. Вы можете использовать инструкцию SET DATEFORMAT Transact-SQL в подключении для устранения неоднозначности значений даты путем упорядочения частей даты в порядке МДГ, ДМГ, ГМД, ГДМ, МГД или ДГМ.You can use the SET DATEFORMAT Transact-SQL statement on a connection to disambiguate date values by ordering the date parts in MDY, DMY, YMD, YDM, MYD, or DYM order.

Если вы не укажете DATEFORMAT для подключения, SQL Server использует связанный с этим подключением язык по умолчанию.If you do not specify any DATEFORMAT for the connection, SQL Server uses the default language associated with the connection. Например, строка даты «01/02/03» будет интерпретироваться как МДГ (2 января 2003 г.) на сервере с заданным языком «английский (США)» и как ДМГ (1 февраля 2003 г.) на сервере с заданным языком «английский (Великобритания)».For example, a date string of ’01/02/03′ would be interpreted as MDY (January 2, 2003) on a server with a language setting of United States English, and as DMY (February 1, 2003) on a server with a language setting of British English. Год определяется с помощью правила порогового года SQL Server, которое определяет пороговую дату для назначения значения столетия.The year is determined by using SQL Server’s cutoff year rule, which defines the cutoff date for assigning the century value. Дополнительные сведения см. в разделе Параметр отсечения двух цифр года электронной документации на SQL Server.For more information, see two digit year cutoff Option in SQL Server Books Online.

Примечание

Формат даты ГДМ не поддерживается при преобразовании из формата строки в , , или .The YDM date format is not supported when converting from a string format to , , , or .

Дополнительные сведения об интерпретации сервером SQL Server даты и времени см. в разделе Использование данных даты и времени электронной документации на SQL Server 2008.For more information about how SQL Server interprets date and time data, see Using Date and Time Data in SQL Server 2008 Books Online.

Дата и время — см. такжеDate and time-related topics

РазделTopic ОписаниеDescription
FORMATFORMAT Возвращает значение в указанных формате и культуре (не обязательно).Returns a value formatted with the specified format and optional culture. Для выполнения форматирования значения даты, времени и чисел с учетом локали в виде строк используется функция FORMAT.Use the FORMAT function for locale-aware formatting of date/time and number values as strings.
Функции CAST и CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL) Предоставляет сведения о преобразовании значений даты и времени в строковые литералы и обратно, а также в другие форматы даты и времени.Provides information about the conversion of date and time values to and from string literals, and other date and time formats.
Написание инструкций Transact-SQL, адаптированных к международному использованиюWrite International Transact-SQL Statements Предоставляет рекомендации относительно переносимости баз данных и приложений баз данных, использующих инструкции Transact-SQLTransact-SQL, с одного языка на другой или в многоязычную среду.Provides guidelines for portability of databases and database applications that use Transact-SQLTransact-SQL statements from one language to another, or that support multiple languages.
Скалярные функции ODBC (Transact-SQL)ODBC Scalar Functions (Transact-SQL) Предоставляет сведения о скалярных функциях ODBC, которые могут использоваться в инструкциях Transact-SQLTransact-SQL.Provides information about ODBC scalar functions available for use in Transact-SQLTransact-SQL statements. К ним относятся функции даты и времени ODBC.This includes ODBC date and time functions.
AT TIME ZONE (Transact-SQL)AT TIME ZONE (Transact-SQL) Обеспечивает преобразование часовых поясов.Provides time zone conversion.

Python DateTime to Unix timestamp milliseconds

Here, we can see how to convert DateTime to Unix timestamp milliseconds in python.

  • In this example, I have imported a module called datetime to get the Unix timestamp in milliseconds. The datetime.now() is used to get the present time.
  • The mktime is the method of time which is the inverse function of local time, this method is used to convert datetime to Unix timestamp milliseconds.
  • The timetuple() is a method of datetime class that returns the attributes of datetime as a name tuple. To get the time in the millisecond it has to be multiplied by 1000.

Example:

We can see the unix timestamp in milliseconds. You can refer to the below screenshot for the output:


Python DateTime to Unix timestamp milliseconds

datetime.datetime

Объект datetime.datetime содержит всю информацию объектов datetime.date плюс datetime.time. Давайте приведем несколько примеров, для лучшего понимания разницы между этим объектом, и объектом datetime.date.

Python

import datetime

a = datetime.datetime(2017, 3, 5)
print(a) # datetime.datetime(2017, 3, 5, 0, 0)

b = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(b) # datetime.datetime(2017, 3, 5, 12, 30, 10)

d = datetime.datetime(2017, 3, 5, 12, 30, 10)
print(d.year) # 2017
print(d.second) # 10
print(d.hour) # 12

1
2
3
4
5
6
7
8
9
10
11
12

importdatetime

a=datetime.datetime(2017,3,5)

print(a)# datetime.datetime(2017, 3, 5, 0, 0)

b=datetime.datetime(2017,3,5,12,30,10)

print(b)# datetime.datetime(2017, 3, 5, 12, 30, 10)

d=datetime.datetime(2017,3,5,12,30,10)

print(d.year)# 2017

print(d.second)# 10

print(d.hour)# 12

Мы видим, что datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе. При работе с базами данных, данные типы объектов будут использоваться достаточно часто. Большую часть вашей работы, вам нужно будет конвертировать форматы date или datetime Python в форматы SQL datetime или timestamp

Обратите внимание на то, что today совместно с datetime.datetime использует два разных метода:

Python

import datetime

a = datetime.datetime.today()
print(a) # datetime.datetime(2017, 4, 5, 0, 16, 54, 989663)

b = datetime.datetime.now()
print(b) # datetime.datetime(2017, 4, 5, 0, 17, 8, 24239)

1
2
3
4
5
6
7

importdatetime

a=datetime.datetime.today()

print(a)# datetime.datetime(2017, 4, 5, 0, 16, 54, 989663)

b=datetime.datetime.now()

print(b)# datetime.datetime(2017, 4, 5, 0, 17, 8, 24239)

Модуль datetime содержит другой метод, под названием strftime. Этот метод позволяет разработчику создавать строку, отображающую время в более понятной для человека форме. Существует целая таблица параметров форматирования, с которой рекомендуется ознакомиться в документации Python, в . Давайте взглянем на несколько примеров, показывающих всю полезность данного метода:

Python

import datetime

a = datetime.datetime.today().strftime(«%Y%m%d»)
print(a) # ‘20170405’

today = datetime.datetime.today()
print( today.strftime(«%m/%d/%Y») ) # ’04/05/2017′

print( today.strftime(«%Y-%m-%d-%H.%M.%S») ) # 2017-04-05-00.18.00

1
2
3
4
5
6
7
8
9

importdatetime

a=datetime.datetime.today().strftime(«%Y%m%d»)

print(a)# ‘20170405’

today=datetime.datetime.today()

print(today.strftime(«%m/%d/%Y»))# ’04/05/2017′

print(today.strftime(«%Y-%m-%d-%H.%M.%S»))# 2017-04-05-00.18.00

Первый пример – это скорее хитрость. В нем показано, как конвертировать сегодняшний объект datetime в строку, следующую за форматом YYYYMMDD (ГГГГММДД). Второй пример более наглядный.

В нем мы присваиваем объект datetime переменной под названием today и применяем два разных параметра форматирования строки. Первый параметр добавляет косые черточки между элементами datetime, а также перегруппировывает datetime, теперь он делится на месяц, день и год. В последнем примере мы создаем временную отметку, которая следует типичному формату: YYYY-MM-DD.HH.MM.SS. Если вам нужно указать год как двухзначный (“YY”), вы можете заменить %Y на %y.

Извлечение данных даты и времениRetrieving date and time data

В следующей таблице описаны методы, используемые для получения значений даты и времени SQL Server 2008.The following table describes methods that are used to retrieve SQL Server 2008 date and time values.

Метод SqlClientSqlClient method DescriptionDescription
GetDateTime Извлекает значение указанного столбца в виде структуры DateTime.Retrieves the specified column value as a DateTime structure.
GetDateTimeOffset Извлекает значение указанного столбца в виде структуры DateTimeOffset.Retrieves the specified column value as a DateTimeOffset structure.
GetProviderSpecificFieldType Возвращает для поля тип, являющийся базовым типом конкретного поставщика.Returns the type that is the underlying provider-specific type for the field. Возвращает для новых типов даты и времени те же типы, что и .Returns the same types as for new date and time types.
GetProviderSpecificValue Возвращает значение указанного столбца.Retrieves the value of the specified column. Возвращает для новых типов даты и времени те же типы, что и .Returns the same types as for the new date and time types.
GetProviderSpecificValues Извлекает значения в указанном массиве.Retrieves the values in the specified array.
GetSqlString Извлекает значение столбца как тип SqlString.Retrieves the column value as a SqlString. InvalidCastException возникает, если данные нельзя выразить в виде .An InvalidCastException occurs if the data cannot be expressed as a .
GetSqlValue Извлекает данные столбца в качестве по умолчанию.Retrieves column data as its default . Возвращает для новых типов даты и времени те же типы, что и .Returns the same types as for the new date and time types.
GetSqlValues Извлекает значения в указанном массиве.Retrieves the values in the specified array.
GetString Возвращает значение столбца в виде строки, если Type System Version имеет значение SQL Server 2005.Retrieves the column value as a string if the Type System Version is set to SQL Server 2005. InvalidCastException возникает, если данные нельзя выразить в качестве строки.An InvalidCastException occurs if the data cannot be expressed as a string.
GetTimeSpan Извлекает значение указанного столбца в виде структуры TimeSpan.Retrieves the specified column value as a TimeSpan structure.
GetValue Извлекает значение указанного столбца в виде базового типа CLR.Retrieves the specified column value as its underlying CLR type.
GetValues Извлекает значения столбцов в массиве.Retrieves column values in an array.
GetSchemaTable Возвращает класс DataTable, описывающий метаданные результирующего набора.Returns a DataTable that describes the metadata of the result set.

Примечание

Новые дата и время не поддерживаются для кода, выполняющегося в процессе на SQL Server.The new date and time are not supported for code that is executing in-process in SQL Server. Если один из этих типов будет передан на сервер, возникнет исключение.An exception will be raised if one of these types is passed to the server.

datetime Time class

The Python datetime module has the time class, which helps us to work with the time and manipulate them. This example uses the Python time method to return 00:00:00.

The Python time class in the datetime module has the following 3 important attributes. 

  • time.min: It returns the earliest or minimum representable time.
  • time.max: Latest or maximum representable time.
  • time.resolution: Smallest possible difference between time.

Create Time using Python time

Here, we are using the time function to construct or create a time with 10 hours, 22 minutes, and 33 seconds

This Python time example is an extension of the above. Here, we are using the microseconds and the argument names as well.

Python time attributes

This example shows the list of available time attributes in python. Here, hour attribute returns the Hour from a given time, minute, second, and microsecond

Python date time timedelta

The datetime timedelta function predicts or return the past and future dates. In this example, we are returning the date and time after one year and two years before. Refer to Python timedelta.

Python date time strftime

The datetime strftime function formats the date in the specified format, and return the date as a string. Here, %Y-%m-%d’ means Year-Month-Day (2019-01-31). Refer to Python strftime.

Python strptime

The datetime strptime converts the string representation of the date to a regular date and time. Here, datetime.strptime(dt_str, ‘%d %B %Y’) means string date is passes in Day Month_Name Year format. Refer Python strptime.

Python Datetime to Unix timestamp timezone

Here, we can see Datetime to unix timestamp timezone in python.

  • In this example, I have imported modules called datetime and timezone and declared a variable as timestring and assigned datetime with timezone.
  • To convert the datetime with timezone to Unix timestamp.
  • I have used d = datetime.datetime.strptime(timestring, “%Y-%m-%dT%H:%M:%SZ”).
  • Here 2020 is the year, 2 is the month, 25 is the day, 23 is the hour, 51 is the minute and, 03 is the second.
  • The timetuple() is a method of datetime class that returns the attributes of datetime as a name tuple.

Example:

We can see datetime timezone to UNIX timestamp as the output. You can refer to the below screenshot for the output:


Python Datetime to unix timestamp timezone

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

Во всех браузерах, кроме IE10-, поддерживается новый стандарт Ecma 402, который добавляет специальные методы для форматирования дат.

Это делается вызовом , в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести, и ряд настроек вывода, после чего интерпретатор сам сформирует строку.

Пример с почти всеми параметрами даты и русским, затем английским (США) форматированием:

Вы сможете подробно узнать о них в статье Intl: интернационализация в JavaScript, которая посвящена этому стандарту.

Методы вывода без локализации:

, ,
Возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему – читаемость человеком. Метод возвращает дату целиком, и – только дату и время соответственно.

То же самое, что , но дата в зоне UTC.

Возвращает дату в формате ISO Детали формата будут далее. Поддерживается современными браузерами, не поддерживается IE8-.

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

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

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

Adblock
detector