Python 3 datetime

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:

  1. outputs calendars and provides functions using an idealized Gregorian calendar.
  2. supplies classes for manipulating dates and times.
  3. 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:

  1. is an idealized date that assumes the Gregorian calendar extends infinitely into the future and past. This object stores the , , and as attributes.
  2. 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).
  3. 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:

  1. a string representing date and time
  2. 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
Добавить комментарий

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

Adblock
detector