Python 3 datetime
Содержание:
- Operations
- Get the current Time only
- Using the Python datetime Module
- How to convert a string to datetime object in Python
- Работа с часовыми поясами
- Get Current Timestamp using time.ctime()
- dateutil
- Python format datetime
- Список кодов форматов
- Как преобразовать?
- The calendar Module
- Get the current Date only
- 4.1. Модуль datetime¶
- Further Reading
- Как визуализировать фондовый рынок с DateTime Numpy?
- How to convert a string to datetime UTC in Python
Operations
Вы можете работать с Series / DataFrames и создавать помощью операций вычитания для Series или .
In s = pd.Series(pd.date_range("2012-1-1", periods=3, freq="D")) In td = pd.Series() In df = pd.DataFrame({"A": s, "B": td}) In df Out: A B 2012-01-01 days 1 2012-01-02 1 days 2 2012-01-03 2 days In df = df + df In df Out: A B C 2012-01-01 days 2012-01-01 1 2012-01-02 1 days 2012-01-03 2 2012-01-03 2 days 2012-01-05 In df.dtypes Out: A datetime64 B timedelta64 C datetime64 dtype: object In s - s.max() Out: -2 days 1 -1 days 2 days dtype: timedelta64 In s - datetime.datetime(2011, 1, 1, 3, 5) Out: 364 days 20:55:00 1 365 days 20:55:00 2 366 days 20:55:00 dtype: timedelta64 In s + datetime.timedelta(minutes=5) Out: 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64 In s + pd.offsets.Minute(5) Out: 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64 In s + pd.offsets.Minute(5) + pd.offsets.Milli(5) Out: 2012-01-01 00:05:00.005 1 2012-01-02 00:05:00.005 2 2012-01-03 00:05:00.005 dtype: datetime64
Операции со скалярами из :
In : y = s - s In : y Out: 0 0 days 1 1 days 2 2 days dtype: timedelta64
Поддерживаются серии timedeltas со значениями :
In : y = s - s.shift() In : y Out: NaT 1 1 days 2 1 days dtype: timedelta64
Элементы могут быть установлены в с помощью аналогично datetimes:
In : y = np.nan In : y Out: 0 NaT 1 NaT 2 1 days dtype: timedelta64
Операнды также могут появляться в обратном порядке (единичный объект оперирует серией):
In : s.max() - s Out: 2 days 1 1 days 2 days dtype: timedelta64 In : datetime.datetime(2011, 1, 1, 3, 5) - s Out: -365 days +03:05:00 1 -366 days +03:05:00 2 -367 days +03:05:00 dtype: timedelta64 In : datetime.timedelta(minutes=5) + s Out: 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64
и соответствующие поддерживаются в кадрах:
In : A = s - pd.Timestamp("20120101") - pd.Timedelta("00:05:05") In : B = s - pd.Series(pd.date_range("2012-1-2", periods=3, freq="D")) In : df = pd.DataFrame({"A": A, "B": B}) In : df Out: A B -1 days +23:54:55 -1 days 1 days 23:54:55 -1 days 2 1 days 23:54:55 -1 days In : df.min() Out: A -1 days +23:54:55 B -1 days +00:00:00 dtype: timedelta64 In : df.min(axis=1) Out: -1 days 1 -1 days 2 -1 days dtype: timedelta64 In : df.idxmin() Out: A B dtype: int64 In : df.idxmax() Out: A 2 B dtype: int64
также поддерживаются в Series. Скалярным результатом будет .
In : df.min().max() Out: Timedelta('-1 days +23:54:55') In : df.min(axis=1).min() Out: Timedelta('-1 days +00:00:00') In : df.min().idxmax() Out: 'A' In : df.min(axis=1).idxmin() Out:
Вы можете выполнять fillna на timedeltas,передавая timedelta для получения определенного значения.
In : y.fillna(pd.Timedelta()) Out: days 1 days 2 1 days dtype: timedelta64 In : y.fillna(pd.Timedelta(10, unit="s")) Out: days 00:00:10 1 days 00:00:10 2 1 days 00:00:00 dtype: timedelta64 In : y.fillna(pd.Timedelta("-1 days, 00:00:05")) Out: -1 days +00:00:05 1 -1 days +00:00:05 2 1 days 00:00:00 dtype: timedelta64
Вы также можете отрицать, умножать и использовать на :
Get the current Time only
Now Suppose we are just interested in current time of today. How to do that?
As datetime module provides a datetime.time class too. We can get time object from a datetime object i.e.
# Returns a datetime object containing the local date and time dateTimeObj = datetime.now() # get the time object from datetime object timeObj = dateTimeObj.time()
# Access the member variables of time object to print time information print(timeObj.hour, ':', timeObj.minute, ':', timeObj.second, '.', timeObj.microsecond) # It contains the time part of the current timestamp, we can access it's member variables to get the fields or we can directly print the object too print(timeObj)
Output:
9 : 44 : 41 . 921898 09:44:41.921898
timeStr = timeObj.strftime("%H:%M:%S.%f")
09:44:41.921898
Using the Python datetime Module
As you can see, working with dates and times in programming can be complicated. Fortunately, you rarely need to implement complicated features from scratch these days since many open-source libraries are available to help out. This is definitely the case in Python, which includes three separate modules in the standard library to work with dates and times:
- outputs calendars and provides functions using an idealized Gregorian calendar.
- supplies classes for manipulating dates and times.
- provides time-related functions where dates are not needed.
In this tutorial, you’ll focus on using the Python module. The main focus of is to make it less complicated to access attributes of the object related to dates, times, and time zones. Since these objects are so useful, also returns instances of classes from .
is less powerful and more complicated to use than . Many functions in return a special instance. This object has a named tuple interface for accessing stored data, making it similar to an instance of . However, it doesn’t support all of the features of , especially the ability to perform arithmetic with time values.
provides three classes that make up the high-level interface that most people will use:
- is an idealized date that assumes the Gregorian calendar extends infinitely into the future and past. This object stores the , , and as attributes.
- is an idealized time that assumes there are 86,400 seconds per day with no leap seconds. This object stores the , , , , and (time zone information).
- is a combination of a and a . It has all the attributes of both classes.
How to convert a string to datetime object in Python
Let us see, how to convert a string into datetime object in python.
- In this example, I have imported a module called datetime, passed a variable as dt_string = “2020-12-18 3:11:09“, and assigned format = “%Y-%m-%d %H:%M:%S” .
- I have used strptime string. This string represents a time according to format.
- dt_object = datetime.datetime.strptime(dt_string, format) used to create datetime object.
Example:
To get the output as datetime object print(“Datetime: “, dt_object), to get minute object print(“Minute: “, dt_object.minute), to get hour object print(“Hour: “, dt_object.hour) and, to get second object print(“Second: “, dt_object.second).
You can refer below screenshot for the output:
Python converting a string to datetime object
Read Python Turtle Write Function
Работа с часовыми поясами
При работе с часовыми поясами обработка даты и времени становится более сложной. Все вышеупомянутые примеры, которые мы обсуждали, являются наивными объектами datetime, то есть эти объекты не содержат данных, связанных с часовым поясом. У объекта datetime есть одна переменная, которая содержит информацию о часовом поясе, tzinfo.
import datetime as dt dtime = dt.datetime.now() print(dtime) print(dtime.tzinfo)
Этот код напечатает:
$ python3 datetime-tzinfo-1.py 2018-06-29 22:16:36.132767 None
Вывод tzinfo – None, поскольку это объект datetime. Для преобразования часового пояса для Python доступна библиотека pytz. Теперь давайте воспользуемся библиотекой, чтобы преобразовать указанную выше метку времени в UTC.
import datetime as dt import pytz dtime = dt.datetime.now(pytz.utc) print(dtime) print(dtime.tzinfo)
Вывод:
$ python3 datetime-tzinfo-2.py 2018-06-29 17:08:00.586525+00:00 UTC
+00: 00 – разница между отображаемым временем и временем UTC. В этом примере значение tzinfo также совпадает с UTC, отсюда смещение 00:00. В этом случае объект datetime является объектом с учетом часового пояса.
Точно так же мы можем преобразовать строки даты и времени в любой другой часовой пояс. Например, мы можем преобразовать строку «2018-06-29 17: 08: 00.586525 + 00: 00» в часовой пояс «America / New_York», как показано ниже:
import datetime as dt import pytz date_time_str = '2018-06-29 17:08:00' date_time_obj = dt.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S') timezone = pytz.timezone('America/New_York') timezone_date_time_obj = timezone.localize(date_time_obj) print(timezone_date_time_obj) print(timezone_date_time_obj.tzinfo)
Выход:
$ python3 datetime-tzinfo-3.py 2018-06-29 17:08:00-04:00 America/New_York
Сначала мы преобразовали строку в объект datetime, date_time_obj. Затем мы преобразовали его в объект datetime с включенным часовым поясом, timezone_date_time_obj. Поскольку мы установили часовой пояс, как «America и New_York», время вывода показывает, что он на 4 часа отстает от времени UTC. Вы можете проверить эту страницу Википедии, чтобы найти полный список доступных часовых поясов.
Get Current Timestamp using time.ctime()
time module has another function time.ctime() i.e.
def ctime(seconds=None)
timeStr = time.ctime() print('Current Timestamp : ', timeStr)
Output:
Current Timestamp : Sun Nov 18 09:44:41 2018
Complete executable example is as follows,
import time from datetime import datetime def main(): print('*** Get Current date & timestamp using datetime.now() ***') # Returns a datetime object containing the local date and time dateTimeObj = datetime.now() # Access the member variables of datetime object to print date & time information print(dateTimeObj.year, '/', dateTimeObj.month, '/', dateTimeObj.day) print(dateTimeObj.hour, ':', dateTimeObj.minute, ':', dateTimeObj.second, '.', dateTimeObj.microsecond) print(dateTimeObj) # Converting datetime object to string timestampStr = dateTimeObj.strftime("%d-%b-%Y (%H:%M:%S.%f)") print('Current Timestamp : ', timestampStr) timestampStr = dateTimeObj.strftime("%H:%M:%S.%f - %b %d %Y ") print('Current Timestamp : ', timestampStr) print('*** Fetch the date only from datetime object ***') # get the date object from datetime object dateObj = dateTimeObj.date() # Print the date object print(dateObj) # Access the member variables of date object to print print(dateObj.year, '/', dateObj.month, '/', dateObj.day) # Converting date object to string dateStr = dateObj.strftime("%b %d %Y ") print(dateStr) print('*** Fetch the time only from datetime object ***') # get the time object from datetime object timeObj = dateTimeObj.time() # Access the member variables of time object to print time information print(timeObj.hour, ':', timeObj.minute, ':', timeObj.second, '.', timeObj.microsecond) # It contains the time part of the current timestamp, we can access it's member variables to get the fields or we can directly print the object too print(timeObj) # Converting date object to string timeStr = timeObj.strftime("%H:%M:%S.%f") print(timeStr) print('*** Get Current Timestamp using time.time() ***') # Get the seconds since epoch secondsSinceEpoch = time.time() print('Seconds since epoch : ', secondsSinceEpoch) # Convert seconds since epoch to struct_time timeObj = time.localtime(secondsSinceEpoch) print(timeObj) # get the current timestamp elements from struct_time object i.e. print('Current TimeStamp is : %d-%d-%d %d:%d:%d' % ( timeObj.tm_mday, timeObj.tm_mon, timeObj.tm_year, timeObj.tm_hour, timeObj.tm_min, timeObj.tm_sec)) # It does not have the microsecond field print('*** Get Current Timestamp using time.ctime() *** ') timeStr = time.ctime() print('Current Timestamp : ', timeStr) if __name__ == '__main__': main()
Output:
*** Get Current date & timestamp using datetime.now() *** 2018 / 11 / 18 9 : 44 : 41 . 921898 2018-11-18 09:44:41.921898 Current Timestamp : 18-Nov-2018 (09:44:41.921898) Current Timestamp : 09:44:41.921898 - Nov 18 2018 *** Fetch the date only from datetime object *** 2018-11-18 2018 / 11 / 18 Nov 18 2018 *** Fetch the time only from datetime object *** 9 : 44 : 41 . 921898 09:44:41.921898 09:44:41.921898 *** Get Current Timestamp using time.time() *** Seconds since epoch : 1542514481.9218981 time.struct_time(tm_year=2018, tm_mon=11, tm_mday=18, tm_hour=9, tm_min=44, tm_sec=41, tm_wday=6, tm_yday=322, tm_isdst=0) Current TimeStamp is : 18-11-2018 9:44:41 *** Get Current Timestamp using time.ctime() *** Current Timestamp : Sun Nov 18 09:44:41 2018
Advertisements
dateutil
Модуль dateutil является расширением модуля datetime. Одно из преимуществ состоит в том, что нам не нужно передавать код синтаксического анализа. Например:
from dateutil.parser import parse datetime = parse('2018-06-29 22:21:41') print(datetime)
Эта функция синтаксического анализа автоматически проанализирует строку и сохранит ее в переменной datetime. Парсинг выполняется автоматически. Вам не нужно указывать какую-либо строку формата. Попробуем разобрать разные типы строк с помощью dateutil:
from dateutil.parser import parse date_array = [ '2018-06-29 08:15:27.243860', 'Jun 28 2018 7:40AM', 'Jun 28 2018 at 7:40AM', 'September 18, 2017, 22:19:55', 'Sun, 05/12/1999, 12:30PM', 'Mon, 21 March, 2015', '2018-03-12T10:12:45Z', '2018-06-29 17:08:00.586525+00:00', '2018-06-29 17:08:00.586525+05:00', 'Tuesday , 6th September, 2017 at 4:30pm' ] for date in date_array: print('Parsing: ' + date) dt = parse(date) print(dt.date()) print(dt.time()) print(dt.tzinfo) print('\n')
Вывод:
$ python3 dateutil-1.py Parsing: 2018-06-29 08:15:27.243860 2018-06-29 08:15:27.243860 None Parsing: Jun 28 2018 7:40AM 2018-06-28 07:40:00 None Parsing: Jun 28 2018 at 7:40AM 2018-06-28 07:40:00 None Parsing: September 18, 2017, 22:19:55 2017-09-18 22:19:55 None Parsing: Sun, 05/12/1999, 12:30PM 1999-05-12 12:30:00 None Parsing: Mon, 21 March, 2015 2015-03-21 00:00:00 None Parsing: 2018-03-12T10:12:45Z 2018-03-12 10:12:45 tzutc() Parsing: 2018-06-29 17:08:00.586525+00:00 2018-06-29 17:08:00.586525 tzutc() Parsing: 2018-06-29 17:08:00.586525+05:00 2018-06-29 17:08:00.586525 tzoffset(None, 18000) Parsing: Tuesday , 6th September, 2017 at 4:30pm 2017-09-06 16:30:00 None
Вы можете видеть, что практически любой тип строки можно легко проанализировать с помощью модуля dateutil.
Хотя это удобно, вспомните из предыдущего, что необходимость предсказывать формат делает код намного медленнее, поэтому, если ваш код требует высокой производительности, это может быть неправильным подходом для вашего приложения.
Python format datetime
The way date and time is represented may be different in different places, organizations etc. It’s more common to use in the US, whereas is more common in the UK.
Python has and methods to handle this.
Example 15: Format date using strftime()
When you run the program, the output will be something like:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Here, , , , etc. are format codes. The method takes one or more format codes and returns a formatted string based on it.
In the above program, t, s1 and s2 are strings.
- — year
- — month
- — day
- — hour [00, 01, …, 22, 23
- — minute
- — second
To learn more about and format codes, visit: Python strftime().
Example 16: strptime()
When you run the program, the output will be:
date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
The method takes two arguments:
- a string representing date and time
- format code equivalent to the first argument
By the way, , and format codes are used for day, month(full name) and year respectively.
Visit Python strptime() to learn more.
Список кодов форматов
В таблице ниже показаны все коды формата, которые вы можете использовать:
Директива | Значение | Пример |
% a | Сокращенное название дня недели. | Вс, пн, … |
% А | Полное название дня недели. | Воскресенье понедельник, … |
%w | День недели в виде десятичного числа. | 0, 1, …, 6 |
% d | День месяца в виде десятичной дроби с нулями. | 01, 02, …, 31 |
% -d | День месяца в виде десятичного числа. | 1, 2, …, 30 |
% b | Сокращенное название месяца. | Янв, Фев, …, Дек |
% B | Полное название месяца. | Январь Февраль, … |
% m | Месяц как десятичное число с нулями. | 01, 02, …, 12 |
% -m | Месяц как десятичное число. | 1, 2, …, 12 |
% y | Год без века как десятичное число с нулями. | 00, 01, …, 99 |
% -y | Год без столетия как десятичное число. | 0, 1, …, 99 |
% Y | Год со столетием в виде десятичного числа. | 2013, 2019 и т. Д. |
%H | Час (в 24-часовом формате) как десятичное число с нулями. | 00, 01, …, 23 |
%-H | Час (24-часовой формат) как десятичное число. | 0, 1, …, 23 |
%I | Час (12-часовой формат) как десятичное число с нулями. | 01, 02, …, 12 |
%-I | Час (12-часовой формат) в виде десятичного числа. | 1, 2, … 12 |
%p | Локализация AM или PM. | до полудня, после полудня |
% M | Минута в виде десятичного числа с нулями. | 00, 01, …, 59 |
% -M | Минута как десятичное число. | 0, 1, …, 59 |
% S | Второй — десятичное число с нулями. | 00, 01, …, 59 |
% -S | Секунда как десятичное число. | 0, 1, …, 59 |
% f | Микросекунда в виде десятичного числа с нулями слева. | 000000–999999 |
%z | Смещение UTC в форме + ЧЧММ или -ЧЧММ. | |
%Z | Название часового пояса. | |
% j | День года в виде десятичного числа с нулями. | 001, 002, …, 366 |
% -j | День года в виде десятичного числа. | 1, 2, …, 366 |
% U | Номер недели в году (воскресенье как первый день недели). Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. | 00, 01, …, 53 |
%W | Номер недели в году (понедельник как первый день недели). Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. | 00, 01, …, 53 |
% c | Соответствующее представление даты и времени языкового стандарта. | 30 сен, пн, 07:06:05 2013 |
%x | Соответствующее представление даты языкового стандарта. | 30.09.13 |
%X | Соответствующее представление времени локали. | 07:06:05 |
%% | Буквальный символ «%». | % |
Как преобразовать?
Модуль datetime состоит из трех разных типов объектов: даты, времени и datetime. Очевидно, что объект date содержит дату, time – время, а datetime – дату и время.
Например, следующий код напечатает текущую дату и время:
import datetime print ('Current date/time: {}'.format(datetime.datetime.now()))
Запуск этого кода напечатает что-то похожее на это:
$ python3 datetime-print-1.py Current date/time: 2018-06-29 08:15:27.243860
Если пользовательское форматирование не задано, используется строковый формат по умолчанию, т.е. формат для «2018-06-29 08: 15: 27.243860» находится в формате ISO 8601 (ГГГГ-ММ-ДДТЧЧ: ММ: СС.мммммм). Если наша входная строка для создания объекта datetime имеет тот же формат ISO 8601, мы можем легко преобразовать ее в объект datetime.
Давайте посмотрим на код ниже:
import datetime date_time_str = '2018-06-29 08:15:27.243860' date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f') print('Date:', date_time_obj.date()) print('Time:', date_time_obj.time()) print('Date-time:', date_time_obj)
Запустив его, он напечатает дату, время и дату-время:
$ python3 datetime-print-2.py Date: 2018-06-29 Time: 08:15:27.243860 Date-time: 2018-06-29 08:15:27.243860
В этом примере мы используем новый метод под названием strptime. Этот метод принимает два аргумента: первый – это строковое представление даты и времени, а второй – формат входной строки. Указание формата, подобного этому, значительно ускоряет синтаксический анализ, поскольку datetime не нужно пытаться интерпретировать формат самостоятельно, что намного дороже в вычислительном отношении. Возвращаемое значение имеет тип datetime.
В нашем примере «2018-06-29 08: 15: 27.243860» – это входная строка, а «% Y-% m-% d% H:% M:% S.% f» – это формат нашей строки даты. Возвращаемое значение datetime сохраняется в переменной date_time_obj. Поскольку это объект datetime, мы можем вызывать методы date() и time() непосредственно на нем. Как видно из выходных данных, он печатает часть «дата» и «время» входной строки.
Вам может быть интересно, что означает формат «% Y-% m-% d% H:% M:% S.% f». Они известны как токены формата. Каждый токен представляет собой отдельную часть даты и времени, такую как день, месяц, год и т.д. Для быстрого ознакомления вот что мы используем в приведенном выше коде:
- % Y: год (4 цифры);
- % m: месяц;
- % d: день месяца;
- % H: час (24 часа);
- % M: минуты;
- % S: секунды;
- % f: микросекунды.
Ожидается, что все эти токены, кроме года, будут заполнены нулями.
Итак, если известен формат строки, ее можно легко преобразовать в объект datetime с помощью strptime. Приведу еще один нетривиальный пример:
import datetime date_time_str = 'Jun 28 2018 7:40AM' date_time_obj = datetime.datetime.strptime(date_time_str, '%b %d %Y %I:%M%p') print('Date:', date_time_obj.date()) print('Time:', date_time_obj.time()) print('Date-time:', date_time_obj)
Из следующего вывода вы можете видеть, что строка была успешно проанализирована, поскольку она правильно распечатывается объектом datetime:
$ python3 datetime-print-3.py Date: 2018-06-28 Time: 07:40:00 Date-time: 2018-06-28 07:40:00
Вот еще несколько примеров часто используемых форматов времени и токенов, используемых для синтаксического анализа:
"Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p" "September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S" "Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p" "Mon, 21 March, 2015" -> "%a, %d %B, %Y" "2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
Вы можете проанализировать строку даты и времени любого формата, используя таблицу, упомянутую в документации strptime.
The calendar Module
The calendar module supplies calendar-related functions, including functions to print a text calendar for a given month or year.
By default, calendar takes Monday as the first day of the week and Sunday as the last one. To change this, call calendar.setfirstweekday() function.
Here is a list of functions available with the calendar module −
Sr.No. | Function with Description |
---|---|
1 |
calendar.calendar(year,w=2,l=1,c=6) Returns a multiline string with a calendar for year year formatted into three columns separated by c spaces. w is the width in characters of each date; each line has length 21*w+18+2*c. l is the number of lines for each week. |
2 |
calendar.firstweekday( ) Returns the current setting for the weekday that starts each week. By default, when calendar is first imported, this is 0, meaning Monday. |
3 |
calendar.isleap(year) Returns True if year is a leap year; otherwise, False. |
4 |
calendar.leapdays(y1,y2) Returns the total number of leap days in the years within range(y1,y2). |
5 |
calendar.month(year,month,w=2,l=1) Returns a multiline string with a calendar for month month of year year, one line per week plus two header lines. w is the width in characters of each date; each line has length 7*w+6. l is the number of lines for each week. |
6 |
calendar.monthcalendar(year,month) Returns a list of lists of ints. Each sublist denotes a week. Days outside month month of year year are set to 0; days within the month are set to their day-of-month, 1 and up. |
7 |
calendar.monthrange(year,month) Returns two integers. The first one is the code of the weekday for the first day of the month month in year year; the second one is the number of days in the month. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 to 12. |
8 |
calendar.prcal(year,w=2,l=1,c=6) Like print calendar.calendar(year,w,l,c). |
9 |
calendar.prmonth(year,month,w=2,l=1) Like print calendar.month(year,month,w,l). |
10 |
calendar.setfirstweekday(weekday) Sets the first day of each week to weekday code weekday. Weekday codes are 0 (Monday) to 6 (Sunday). |
11 |
calendar.timegm(tupletime) The inverse of time.gmtime: accepts a time instant in time-tuple form and returns the same instant as a floating-point number of seconds since the epoch. |
12 |
calendar.weekday(year,month,day) Returns the weekday code for the given date. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 (January) to 12 (December). |
Get the current Date only
Suppose we don’t want complete current timestamp, we are just interested in current date. How to do that ?
datetime class in datetime module consists of 2 other classes i.e date & time class. We can get date object from a datetime object i.e.
dateTimeObj = datetime.now() # get the date object from datetime object dateObj = dateTimeObj.date()
# Access the member variables of date object to print print(dateObj.year, '/', dateObj.month, '/', dateObj.day) # Print the date object print(dateObj)
Output:
9 : 37 : 55 . 574360 09:37:55.574360
# Converting date object to string dateStr = dateObj.strftime("%b %d %Y ") print(dateStr)
Output:
Nov 18 2018
4.1. Модуль datetime¶
Основной функционал для работы с датами и временем сосредоточен в модуле datetime в виде следующих классов:
- date
- time
- datetime
4.1.1. Класс date
Для работы с датами воспользуемся классом date, который определен в модуле datetime. Для создания объекта date мы можем использовать конструктор date, который последовательно принимает три параметра: год, месяц и день:
date(year, month, day)
Например, создадим какую-либо дату:
import datetime yesterday = datetime.date(2017,5, 2) print(yesterday) # 2017-05-02
Если необходимо получить текущую дату, то можно воспользоваться методом today():
from datetime import date today = date.today() print(today) # 2017-05-03 print("{}.{}.{}".format(today.day, today.month, today.year)) # 2.5.2017
С помощью свойств day, month, year можно получить соответственно день, месяц и год.
4.1.2. Класс time
За работу с временем отвечает класс time. Используя его конструктор, можно создать объект времени:
time()
Конструктор последовательно принимает часы, минуты, секунды и микросекунды. Все параметры необязательные, и если мы какой-то параметр не передадим, то соответствующее значение будет инициализироваться нулем:
from datetime import time current_time = time() print(current_time) # 00:00:00 current_time = time(16, 25) print(current_time) # 16:25:00 current_time = time(16, 25, 45) print(current_time) # 16:25:45
4.1.3. Класс datetime
Класс datetime из одноименного модуля объединяет возможности работы с датой и временем. Для создания объекта datetime можно использовать следующий конструктор:
datetime(year, month, day )
Первые три параметра, представляющие год, месяц и день, являются обязательными. Остальные необязательные, и если мы не укажем для них значения, то по умолчанию они инициализируются нулем:
from datetime import datetime deadline = datetime(2017, 5, 10) print(deadline) # 2017-05-10 00:00:00 deadline = datetime(2017, 5, 10, 4, 30) print(deadline) # 2017-05-10 04:30:00
Для получения текущих даты и времени можно вызвать метод now():
from datetime import datetime now = datetime.now() print(now) # 2017-05-03 11:18:56.239443 print("{}.{}.{}{}{}".format(now.day, now.month, now.year, now.hour, now.minute)) # 3.5.2017 11:21 print(now.date()) print(now.time())
С помощью свойств day, month, year, hour, minute, second можно получить отдельные значения даты и времени. А через методы date() и time() можно получить отдельно дату и время соответственно.
Further Reading
Since programming with time can be so complicated, there are many resources on the web to help you learn more about it. Fortunately, this is a problem that many people who work in every programming language have thought about, so you can usually find information or tools to help with any problem you may have. Here’s a selected list of articles and videos that I found helpful in writing this tutorial:
- Daylight saving time and time zone best practices
- Storing UTC is not a Silver Bullet
- How to save datetimes for future events
- Coding Best Practices Using DateTime in the .NET Framework
- Computerphile: The Problem with Time & Timezones
- The Complexity of Time Data Programming
In addition, Paul Ganssle is a core contributor to CPython and the current maintainer of . His articles and videos are a great resource for Python users:
Как визуализировать фондовый рынок с DateTime Numpy?
Для следующего примера я скачал последние 10 лет данных фондового рынка для S & P 500 Отказ Вы можете свободно загружать его здесь Отказ
Я проделал предварительную обработку от этой статьи и завершился двумя списками. Первый, Значения, Содержит значение индекса S & P 500 в закрытии каждый день с 2009-10-23 до 2019-10-22. Второй, datetimes содержит объекты на каждый день.
>>> values >>> datetimes
Я зацикливаю эти списки вместе, чтобы создать словарь, где каждый ключ является датой и каждым значением значение S & P 500. Мы будем использовать это для создания подмножеств наших данных позже, только выбрав ключи, которые мы хотим.
# Dictionary comprehensions are equally as wonderful as list comprehensions sp500 = {date: val for date, val in zip(datetimes, values)}
Участок 1 – все данные
plt.plot(datetimes, values) plt.xlabel('Year') plt.ylabel('SP500 Index') plt.title('SP500 Index Every Day from 2010-2019') plt.show()
Во всем наборе данных наблюдается огромная тенденция. Но график довольно шумный. Можно увидеть другие тенденции, но потому что есть так много очков, это не особенно приятно смотреть. Что делать, если мы повторно выбирали, чтобы увидеть, как рынок исполнился год на год? Для этого мы посмотрим на 1 января каждый год.
Участок 2 – 1 янв
Примечание: 1 ян Ян – это праздник каждый год, и поэтому фондовый рынок не открыт. Итак, мы будем использовать Чтобы выбрать ближайшую действительную дату для нас.
Во-первых, создайте список каждый год, используя NP.Arge ().
all_years = np.arange('2010', '2020', dtype='datetime64')
Так как значения datetimes У единицы времени «D» мы должны преобразовать даты в All_years к этому тоже. По умолчанию по умолчанию каждый элемент к yyyy-01-01.
first_jan_dates =
Наконец, мы применяем Способ вернуть элементы, которые мы хотим от SP500. И мы обертываем их в Чтобы убедиться, что мы выбираем рабочий день.
first_jan_values =
Теперь мы замышляем.
Это гораздо более гладкий сюжет, и очень легко понять, что годы имели положительный и отрицательный рост. Такова сила ретора!
Но этот граф слишком общий? Чтобы получить хорошую среднюю позицию, давайте посмотрим на стоимость S & P 500 в начале каждые квартал за последние 10 лет. Процесс практически идентичен тому, которое мы использовали выше.
Участок 3 – Каждый квартал
Во-первых, создайте список каждого квартала в виде YYYY-MM. Помните четверти 3 месяца!
every_quarter = np.arange('2010-01', '2019-10', 3, dtype='datetime64')
Переосмысление наших объектов DateTime для «D» с использованием понимания списка.
quarter_start_dates =
Наконец, мы применяем метод .get () для возврата элементов, которые мы хотим. И мы обертываем их в np.busday_offset (), чтобы убедиться, что мы выбираем рабочий день.
quarter_start_values =
Теперь мы замышляем
plt.plot(quarter_start_dates, quarter_start_values) plt.show()
Это дает нам прекрасный обзор тенденций фондового рынка. Это не слишком шумно (как сюжет 1) или чрезмерно упрощенный (например, сюжет 2). Внутрилетние провалы ясны, пока график все еще легко понятен.
И именно это! Все, что вам нужно знать, чтобы использовать NP.DATETETIME64 и связанные с ними функции, а также некоторые реальные примеры мира.
Если у вас есть какие-либо вопросы или предложения, пожалуйста, используйте окно комментариев ниже. Мы любим услышать отзывы и предложения!
How to convert a string to datetime UTC in Python
Here, we can see how to convert a string to datetime utc format in Python.
- In this example, I have imported modules called pytz and datetime. And assigned timezone as pytz.timezone (“Asia/Kolkata“).
- Pytz is a library used for timezone calculation and lc.localize() is used to make a naive timezone. A simple datetime object is called a timezone naive, and lc_datetime.astimezone() is a function used to set the time according to the required timezone.
Example:
To get the output as time in UTC format print(utc_date_time), and it will return date and time. You can refer to the below screenshot for the output.
Python converting a string to datetime utc
You may like the following Python tutorials:
- Escape sequence in Python
- Python list comprehension lambda
- Python Threading and Multithreading
- How to convert Python degrees to radians
- Python Comparison Operators
- Python namespace tutorial
- Python Tkinter Frame
- How to make a matrix in Python
- Linked Lists in Python
- How to display a calendar in Python
- How to Convert Python string to byte array with Examples
In this Python tutorial, we have learned about how to convert a string to DateTime in Python. Also, We covered these below topics:
- Python convert a string to datetime object
- Python convert a string to datetime with timezone
- Python convert a string to datetime without format
- Python convert a string to datetime pandas
- Python convert a string to datetime iso format
- Python convert a string to datetime with milliseconds
- Python convert a string to datetime yyyy-mm-dd
- Python convert a string to timestamp
- How to convert a string to datetime.date in Python
- Python convert a datetime to string
- Python convert a string to datetime UTC