Python — date & time

Date Time Representation

A date and its various parts are represented by using different datetime functions. Also, there are format specifiers which play a role in displaying the alphabetical parts of a date like name of the month or week day. The following code shows today’s date and various parts of the date.

import datetime

print 'The Date Today is  :', datetime.datetime.today()

date_today = datetime.date.today()
print date_today
print 'This Year   :', date_today.year
print 'This Month    :', date_today.month
print 'Month Name:',date_today.strftime('%B')
print 'This Week Day    :', date_today.day
print 'Week Day Name:',date_today.strftime('%A')

When we execute the above code, it produces the following result.

The Date Today is  : 2018-04-22 15:38:35.835000
2018-04-22
This Year   : 2018
This Month    : 4
Month Name: April
This Week Day    : 22
Week Day Name: Sunday

Calculate future or past dates

#30 days ahead
delta = datetime.timedelta(days=30)
print(dt + delta)
2019-08-19 10:51:00

#30 days back
print(dt - delta)
2019-06-20 10:51:00

delta = datetime.timedelta(days= 10, hours=3, minutes=30, seconds=30)
print(dt + delta)
2019-07-30 14:21:30

delta = datetime.timedelta(weeks= 4, hours=3, minutes=30, seconds=30)
print(dt + delta)
2019-08-17 14:21:30
from dateutil.relativedelta import *
#1 Month ahead
print(dt + relativedelta(months=+1))
2019-08-20 10:51:00

#1 Month Back
print(dt + relativedelta(months=-1))

2019-08-19 10:51:002019-08-20 10:51:00

#Next month, plus one week
print(dt + relativedelta(months=+1, weeks=+1))

#Next Year
print(dt + relativedelta(years=+1))

Consider Leap Years

print(datetime.date(2000, 2, 29)+ relativedelta(years=+1))

Output
2001-02-28

Формат datetime

Представление даты и времени может отличатся в разных странах, организациях и т. д. В США, например, чаще всего используется формат «мм/дд/гггг», тогда как в Великобритании более распространен формат «дд/мм/гггг».

В Python для работы с форматами есть методы и .

Python strftime() — преобразование объекта datetime в строку

Метод определен в классах , и . Он создает форматированную строку из заданного объекта , или .

Пример 16: форматирование даты с использованием метода strftime().

from datetime import datetime

now = datetime.now()

t = now.strftime("%H:%M:%S")
print("time:", t)

s1 = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("s1:", s1)

s2 = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("s2:", s2)

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

Здесь , , , и т. д. — коды для определения формата. Метод принимает один или несколько кодов и возвращает отформатированную строку на его основе.

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

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

  • — год
  • — месяц
  • — день
  • — час
  • — минута
  • — секунда

Python strptime()- преобразование строки в  объект datetime

Метод создает объект datetime из заданной строки (представляющей дату и время).

Пример 17: метод strptime().

from datetime import datetime

date_string = "21 June, 2018"
print("date_string =", date_string)

date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)

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

Метод принимает два аргумента:

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

Кстати, коды , и используются для обозначения дня, месяца (название месяца в полном виде) и года соответственно.

Directive

The following directives can be embedded in the format string −

  • %a − abbreviated weekday name

  • %A − full weekday name

  • %b − abbreviated month name

  • %B − full month name

  • %c − preferred date and time representation

  • %C − century number (the year divided by 100, range 00 to 99)

  • %d − day of the month (01 to 31)

  • %D − same as %m/%d/%y

  • %e − day of the month (1 to 31)

  • %g − like %G, but without the century

  • %G − 4-digit year corresponding to the ISO week number (see %V).

  • %h − same as %b

  • %H − hour, using a 24-hour clock (00 to 23)

  • %I − hour, using a 12-hour clock (01 to 12)

  • %j − day of the year (001 to 366)

  • %m − month (01 to 12)

  • %M − minute

  • %n − newline character

  • %p − either am or pm according to the given time value

  • %r − time in a.m. and p.m. notation

  • %R − time in 24 hour notation

  • %S − second

  • %t − tab character

  • %T − current time, equal to %H:%M:%S

  • %u − weekday as a number (1 to 7), Monday=1. Warning: In Sun Solaris Sunday = 1

  • %U − week number of the current year, starting with the first Sunday as the first day of the first week

  • %V − The ISO 8601 week number of the current year (01 to 53), where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week

  • %W − week number of the current year, starting with the first Monday as the first day of the first week

  • %w − day of the week as a decimal, Sunday = 0

  • %x − preferred date representation without the time

  • %X − preferred time representation without the date

  • %y − year without a century (range 00 to 99)

  • %Y − year including the century

  • %Z or %z − time zone or name or abbreviation

  • %% − a literal % character

Модуль time

Модуль time открывает разработчику Python доступ к нескольким связанным со временем функциям. Модуль основан на «эпохе», точке, с которой начинается время. Для систем Unix, эпоха началась в 1970 году. Чтобы узнать, какая эпоха в вашей системе, попробуйте запустить следующий код:

Python

import time
print(time.gmtime(0))

1
2

importtime

print(time.gmtime())

Результат

Python

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=\
0, tm_wday=3, tm_yday=1, tm_isdst=0)

1
2

time.struct_time(tm_year=1970,tm_mon=1,tm_mday=1,tm_hour=,tm_min=,tm_sec=\

,tm_wday=3,tm_yday=1,tm_isdst=)

Я запустил его на Windows 7, которая также уверена в том, что начало времен датируется 1970м годом. В любом случае, в данном разделе мы ознакомимся со следующими функциями:

  • time.ctime
  • time.sleep
  • time.strftime
  • time.time

Приступим!

Python NumPy

NumPy IntroNumPy Getting StartedNumPy Creating ArraysNumPy Array IndexingNumPy Array SlicingNumPy Data TypesNumPy Copy vs ViewNumPy Array ShapeNumPy Array ReshapeNumPy Array IteratingNumPy Array JoinNumPy Array SplitNumPy Array SearchNumPy Array SortNumPy Array FilterNumPy Random
Random Intro
Data Distribution
Random Permutation
Seaborn Module
Normal Distribution
Binomial Distribution
Poisson Distribution
Uniform Distribution
Logistic Distribution
Multinomial Distribution
Exponential Distribution
Chi Square Distribution
Rayleigh Distribution
Pareto Distribution
Zipf Distribution

NumPy ufunc
ufunc Intro
ufunc Create Function
ufunc Simple Arithmetic
ufunc Rounding Decimals
ufunc Logs
ufunc Summations
ufunc Products
ufunc Differences
ufunc Finding LCM
ufunc Finding GCD
ufunc Trigonometric
ufunc Hyperbolic
ufunc Set Operations

Date Time Arithmetic

For calculations involving dates we store the various dates into variables and apply the relevant mathematical operator to these variables.

import datetime 
 
#Capture the First Date
day1 = datetime.date(2018, 2, 12)
print 'day1:', day1.ctime()

# Capture the Second Date
day2 = datetime.date(2017, 8, 18)
print 'day2:', day2.ctime()

# Find the difference between the dates
print 'Number of Days:', day1-day2


date_today  = datetime.date.today() 

# Create a delta of Four Days 
no_of_days = datetime.timedelta(days=4) 

# Use Delta for Past Date
before_four_days = date_today - no_of_days 
print 'Before Four Days:', before_four_days 
 
# Use Delta for future Date
after_four_days = date_today + no_of_days 
print 'After Four Days:', after_four_days 

When we execute the above code, it produces the following result.

day1: Mon Feb 12 00:00:00 2018
day2: Fri Aug 18 00:00:00 2017
Number of Days: 178 days, 0:00:00
Before Four Days: 2018-04-18
After Four Days: 2018-04-26

Python NumPy

NumPy IntroNumPy Getting StartedNumPy Creating ArraysNumPy Array IndexingNumPy Array SlicingNumPy Data TypesNumPy Copy vs ViewNumPy Array ShapeNumPy Array ReshapeNumPy Array IteratingNumPy Array JoinNumPy Array SplitNumPy Array SearchNumPy Array SortNumPy Array FilterNumPy Random
Random Intro
Data Distribution
Random Permutation
Seaborn Module
Normal Distribution
Binomial Distribution
Poisson Distribution
Uniform Distribution
Logistic Distribution
Multinomial Distribution
Exponential Distribution
Chi Square Distribution
Rayleigh Distribution
Pareto Distribution
Zipf Distribution

NumPy ufunc
ufunc Intro
ufunc Create Function
ufunc Simple Arithmetic
ufunc Rounding Decimals
ufunc Logs
ufunc Summations
ufunc Products
ufunc Differences
ufunc Finding LCM
ufunc Finding GCD
ufunc Trigonometric
ufunc Hyperbolic
ufunc Set Operations

Directive

  • %a — abbreviated weekday name

  • %A — full weekday name

  • %b — abbreviated month name

  • %B — full month name

  • %c — preferred date and time representation

  • %C — century number (the year divided by 100, range 00 to 99)

  • %d — day of the month (01 to 31)

  • %D — same as %m/%d/%y

  • %e — day of the month (1 to 31)

  • %g — like %G, but without the century

  • %G — 4-digit year corresponding to the ISO week number (see %V).

  • %h — same as %b

  • %H — hour, using a 24-hour clock (00 to 23)

  • %I — hour, using a 12-hour clock (01 to 12)

  • %j — day of the year (001 to 366)

  • %m — month (01 to 12)

  • %M — minute

  • %n — newline character

  • %p — either am or pm according to the given time value

  • %r — time in a.m. and p.m. notation

  • %R — time in 24 hour notation

  • %S — second

  • %t — tab character

  • %T — current time, equal to %H:%M:%S

  • %u — weekday as a number (1 to 7), Monday=1. Warning: In Sun Solaris Sunday=1

  • %U — week number of the current year, starting with the first Sunday as the first day of the first week

  • %V — The ISO 8601 week number of the current year (01 to 53), where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week

  • %W — week number of the current year, starting with the first Monday as the first day of the first week

  • %w — day of the week as a decimal, Sunday=0

  • %x — preferred date representation without the time

  • %X — preferred time representation without the date

  • %y — year without a century (range 00 to 99)

  • %Y — year including the century

  • %Z or %z — time zone or name or abbreviation

  • %% — a literal % character

Python datetime strptime Example

For a get datetime class, you need to import DateTime module.

import datetime

# MM/DD/YY HH:MM:SS
datetime_str = ’10/11/18 14:35:32′

datetime_obj = datetime.datetime.strptime(datetime_str, ‘%m/%d/%y %H:%M:%S’)
print(datetime_obj)

1
2
3
4
5
6
7

import datetime

 
# MM/DD/YY HH:MM:SS

datetime_str=’10/11/18 14:35:32′

datetime_obj=datetime.datetime.strptime(datetime_str,’%m/%d/%y %H:%M:%S’)

print(datetime_obj)

Output: 2018-10-11 14:35:32

OR – the Same example for above, import “from module_name.member_name” datetime.

from datetime import datetime

# MM/DD/YY HH:MM:SS
datetime_str = ’10/11/18 14:35:32′

datetime_obj = datetime.strptime(datetime_str, ‘%m/%d/%y %H:%M:%S’)
print(datetime_obj)

1
2
3
4
5
6
7

from datetime import datetime

 
# MM/DD/YY HH:MM:SS

datetime_str=’10/11/18 14:35:32′

datetime_obj=datetime.strptime(datetime_str,’%m/%d/%y %H:%M:%S’)

print(datetime_obj)

Get the Time from String 

Example of get the TIME only.

import datetime

time_str = ’15:35:36′
time_obj = datetime.datetime.strptime(time_str, ‘%H:%M:%S’).time()
print(time_obj)

1
2
3
4
5

import datetime

time_str=’15:35:36′

time_obj=datetime.datetime.strptime(time_str,’%H:%M:%S’).time()

print(time_obj)

Output: 15:35:36

Get the Date from String 

Example of get the DATE only.

import datetime
date_str = ’10-11-2018′

date_object = datetime.datetime.strptime(date_str, ‘%m-%d-%Y’).date()

print(date_object)

1
2
3
4
5
6

import datetime

date_str=’10-11-2018′

date_object=datetime.datetime.strptime(date_str,’%m-%d-%Y’).date()

print(date_object)

Output: 2018-10-11

Модуль time

Модуль основан на «эпохе Unix», которая началась 1 января 1970 года:

>>> import time
>>> print(time.gmtime(0))
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

Функция возвращает время в секундах по Гринвичу, начиная с эпохи Unix, как число с плавающей запятой:

>>> time.time()
1524561056.103065

Функция преобразует время, выраженное в секундах с начала эпохи Unix, в строку вида «Tue Apr 24 10:36:06 2018»:

>>> print(time.ctime())
Tue Apr 24 10:36:06 2018

Функция возвращает время по Гринвичу как объект

>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=9, tm_min=6, tm_sec=29, tm_wday=1, tm_yday=114, tm_isdst=0)

Функция возвращает местное время (с учетом часового пояса) как объект

>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=12, tm_min=6, tm_sec=51, tm_wday=1, tm_yday=114, tm_isdst=0)

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

>>> time.altzone
-14400

Функция приостановливает выполнение скрипта на определенное количество секунд.

Свойства и методы класса

  • — смещение часового пояса в секундах от нулевого меридиана.
  • — возвращает текущее время в секундах по Гринвичу, прошедшее с начала эпохи Unix.
  • — возвращает строкове представление переданной либо текущей даты.
  • — возвращает строковое представление текущего местного времени.
  • — возвращает объект , текущего или переданного времени по Гринвичу.
  • — возвращает объект , текущего или переданного времени. Представляющий местное время с начала эпохи Unix.
  • — преобразует кортеж или объект во время в секундах.
  • — приостановить выполнение программы на заданное количество секунд.
  • — преобразует кортеж или в строку по формату.

модуль datetime

Модуль также весьма полезен здесь:

– метод класса, который возвращает текущее время. Он использует без информации о часовом поясе (если не указано, в противном случае см. Информацию о часовом поясе ниже). Он имеет представление (которое позволит вам воссоздать эквивалентный объект), эхом отдаваться в оболочке, но при печати (или принуждении к ) он находится в формате для чтения (и почти ISO), а лексикографическая сортировка эквивалентна хронологический вид:

datetime’s

Вы можете получить объект datetime в UTC, глобальном стандарте, следующим образом:

UTC – это стандарт времени, который почти эквивалентен часовому поясу GMT. (Хотя GMT и UTC не изменяются для летнего времени, их пользователи могут переключаться на другие временные интервалы, например, «Летнее время Великобритании» в течение лета).

datetime timezone

Однако ни один из объектов datetime, которые мы создали до сих пор, может быть легко преобразован в различные временные интервалы. Мы можем решить эту проблему с помощью модуля :

Эквивалентно, что в Python 3 у нас есть класс часовой прикрепленным экземпляром времени utc, который также делает информацию о часовом поясе объекта (но для преобразования в другой часовой пояс без удобного модуля остается в качестве упражнения для читателя):

И мы видим, что мы можем легко преобразовать временные интервалы из исходного объекта utc.

Вы также можете сделать наивный объект datetime осведомленным с помощью метода часового пояса pytz или заменить атрибут tzinfo (с , это делается вслепую), но это более последние курорты, чем лучшие практики:

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

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

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

Если вы показываете время с Python для пользователя, работает красиво, а не в таблице (обычно не сортируется), но, возможно, в часах. Тем не менее, я лично рекомендую, когда занимаюсь временем на Python, либо используя время Unix, либо объект времени dTC для времени часовой пояс.

datetime.date Class

You can instantiate objects from the class. A date object represents a date (year, month and day).

Example 3: Date object to represent a date

When you run the program, the output will be:

2019-04-13

If you are wondering, in the above example is a constructor of the class. The constructor takes three arguments: year, month and day.

The variable a is a object.

We can only import class from the module. Here’s how:

Example 5: Get date from a timestamp

We can also create objects from a timestamp. A Unix timestamp is the number of seconds between a particular date and January 1, 1970 at UTC. You can convert a timestamp to date using method.

When you run the program, the output will be:

Date = 2012-01-11

What is TimeTuple?

Many of the Python’s time functions handle time as a tuple of 9 numbers, as shown below −

Index Field Values
4-digit year 2016
1 Month 1 to 12
2 Day 1 to 31
3 Hour 0 to 23
4 Minute 0 to 59
5 Second 0 to 61 (60 or 61 are leap-seconds)
6 Day of Week 0 to 6 (0 is Monday)
7 Day of year 1 to 366 (Julian day)
8 Daylight savings -1, 0, 1, -1 means library determines DST

For Example −

import time

print (time.localtime());

This would produce a result as follows −

time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9, 
   tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

The above tuple is equivalent to struct_time structure. This structure has following attributes −

Index Attributes Values
tm_year 2016
1 tm_mon 1 to 12
2 tm_mday 1 to 31
3 tm_hour 0 to 23
4 tm_min 0 to 59
5 tm_sec 0 to 61 (60 or 61 are leap-seconds)
6 tm_wday 0 to 6 (0 is Monday)
7 tm_yday 1 to 366 (Julian day)
8 tm_isdst -1, 0, 1, -1 means library determines DST

Using different Format codes with Python strftime() function

Python strftime() function uses format codes to represent the timestamp in a standard and maintained format. Further, we can use format codes to segregate days, hours, weeks, etc from the timestamp and display the same.

Let’s understand the format codes with the help of some examples.

Example 1: Format code — ‘%A‘ to display the current date of the localtime.

from time import strftime

day = strftime("%A") 
print("Current day:", day) 

Output:

Current day: Tuesday

Example 2: Format code — ‘%c’ to display the current localtime.

Format code – ‘%c’ is used to display the current localtime which follows the following format:

Day Month Date hours:mins:sec Year

from time import strftime

day = strftime("%c") 
print("Current timestamp:", day) 

Output:

Current timestamp: Tue Apr 28 16:42:22 2020

Example 3: Format code — ‘%R‘ to represent the time in a 24 hour format.

from time import strftime

day = strftime("%R") 
print("Current time in a 24-hour format:", day) 

Output:

Current time in a 24-hour format: 16:44

Example 4: Format code — ‘%r’ to display the time in H:M:S format along with the description i.e. AM or PM.

from time import strftime

day = strftime("%r") 
print("Current time -- hours:mins:seconds", day) 

Output:

Current time -- hours:mins:seconds 05:05:19 PM

Example 5:

from time import strftime

day = strftime("%x -- %X %p") 
print("Local date and time:", day) 

In the above example, we have used format code ‘%x’ to represent the local timestamp in terms of date and ‘%X’ to represent the local time in the form of H:M:S. The ‘%p’ format code is used to represent whether the timestamp belongs to AM or PM.

Output:

Local date and time: 04/28/20 -- 17:08:42 PM

time.sleep

Функция time.sleep дает разработчику возможность приостановить выполнение его скрипта на определенное количество секунд. Это можно сравнить с добавлением функции «Пауза» в вашу программу. Я нашел этот класс особенно полезным, когда мне нужно было подождать несколько секунд, пока закроется файл, или база данных закончит выполнять свою задачу. Давайте взглянем на пример. Откройте новое окно в IDLE и сохраните следующий код:

Python

import time

for x in range(5):
time.sleep(2)
print(«Slept for 2 seconds»)

1
2
3
4
5

importtime

forxinrange(5)

time.sleep(2)

print(«Slept for 2 seconds»)

Теперь запустите этот код в IDLE. Сделав это, вы увидите фразу «Slept for 2 seconds» пять раз, с интервалом в 2 секунды между каждым сообщением. Это очень легко в использовании!

datetime.timedelta

Объект datetime.timedelta отображает длительность времени. Другими словами, это разница между двумя датами или временными отметками. Давайте взглянем на наглядный пример:

Python

import datetime

# Значение: datetime.datetime(2017, 4, 5, 0, 18, 51, 980187)
now = datetime.datetime.now()

then = datetime.datetime(2017, 2, 26)

# Кол-во времени между датами.
delta = now — then

print(delta.days) # 38
print(delta.seconds) # 1131

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

importdatetime

 
# Значение: datetime.datetime(2017, 4, 5, 0, 18, 51, 980187)

now=datetime.datetime.now()

then=datetime.datetime(2017,2,26)

 
# Кол-во времени между датами.

delta=now-then

print(delta.days)# 38

print(delta.seconds)# 1131

Мы создали два объекта datetime. Один указывает на сегодняшний день, второй – на прошедшую неделю. После этого, мы берем разницу между ними. Это возвращает объект timedelta, который мы можем далее использовать, чтобы выяснить, сколько прошло дней или секунд, между этими двумя датами. Если вам нужно узнать количество часов или минут между двумя датами, вам понадобится немножко математики, чтобы выяснить это. Давайте взглянем на проверенный способ:

Python

seconds = delta.total_seconds()
hours = seconds // 3600

print(hours) # 186.0

minutes = (seconds % 3600) // 60
print(minutes) # 13.0

1
2
3
4
5
6
7

seconds=delta.total_seconds()

hours=seconds3600

print(hours)# 186.0

minutes=(seconds%3600)60

print(minutes)# 13.0

Отсюда мы узнаем, что в неделе 186 часов и 13 минут

Обратите внимание на то, что мы используем двойную косую черту в качестве нашего оператора деления, также известного как floor division. Теперь мы готовы к тому, чтобы узнать больше о модуле time Python

Модуль datetime

Модуль содержит классы:

Также существует класс , который применяется для работы с часовыми поясами.

Класс datetime.date

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

>>> import datetime
>>> date = datetime.date(2017, 4, 2)
>>> date.year
2017
>>> date.month
4
>>> date.day
2

Давайте посмотрим, какой сейчас день:

>>> today = datetime.date.today()
>>> today.year
2018
>>> today.month
4
>>> today.day
21

Класс datetime.datetime

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

>>> date_time = datetime.datetime(2017, 4, 21, 13, 30, 10)
>>> date_time.year
2017
>>> date_time.month
4
>>> date_time.day
21
>>> date_time.hour
13
>>> date_time.minute
30
>>> date_time.second
10

Давайте посмотрим, какое сейчас время:

>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2018, 4, 21, 12, 43, 27, 786725)
>>> today.hour
12
>>> today.minute
43
>>> datetime.datetime.now() # местное время
datetime.datetime(2018, 4, 24, 13, 2, 39, 17479)
>>> datetime.datetime.utcnow() # время по Гринвичу
datetime.datetime(2018, 4, 24, 10, 2, 47, 46330)

Получить из объекта отдельно дату и отдельно время:

>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2018, 4, 21, 13, 26, 54, 387462)
>>> today.date() # отдельно дата
datetime.date(2018, 4, 21)
>>> today.time() # отдельно время
datetime.time(13, 26, 54, 387462)

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

>>> today = datetime.date.today().strftime("%d.%m.%Y")
>>> today
'21.04.2018'
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "ru") # задаем локаль для вывода даты на русском языке
'ru'
>>> today = datetime.datetime.today().strftime("%A, %d.%m.%Y")
>>> today
'суббота, 21.04.2018'
Сокращенное название дня недели
Полное название дня недели
Сокращенное название месяца
Полное название месяца
Дата и время
День месяца
24-часовой формат часа
12-часовой формат часа
День года. Цифровой формат
Номер месяца. Цифровой формат
Минута. Цифровой формат
До полудня или после (AM или PM)
Секунда. Цифровой формат
Номер недели в году. Цифровой формат (с воскресенья)
День недели. Цифровой формат
Номер недели в году. Цифровой формат (с понедельника)
Дата
Время
Год без века. Цифровой формат
Год с веком. Цифровой формат
Временная зона
Знак процента

Методы класса :

  • — объект из текущей даты и времени; работает также, как и со значением .
  • — объект из текущей даты и времени, местное время.
  • — объект из текущей даты и времени, по Гринвичу.
  • — дата из стандартного представления времени.
  • — дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.
  • — объект из комбинации объектов и .
  • — преобразует строку в (так же, как и функция из модуля ).
  • — преобразует объект в строку согласно формату.
  • — объект даты (с отсечением времени).
  • — объект времени (с отсечением даты).
  • — возвращает новый объект с изменёнными атрибутами.
  • — возвращает из .
  • — количество дней, прошедших с 01.01.1970.
  • — возвращает время в секундах с начала эпохи Unix.
  • — день недели в виде числа, понедельник — 0, воскресенье — 6.
  • — день недели в виде числа, понедельник — 1, воскресенье — 7.
  • — кортеж (год в формате ISO, ISO номер недели, ISO день недели).
  • — красивая строка вида или, если ,
  • — возвращает строковое представление текущего местного времени.

Класс datetime.timedelta

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

>>> delta = datetime.timedelta(days = 5, hours = 1, minutes = 1)
>>> delta
datetime.timedelta(5, 3660)

Интервал времени 5 дней, 1 час и 1 минута. Получить результат можно с помощью атрибутов , и (5 дней и 3660 секунд):

>>> delta.days
5
>>> delta.seconds
3660

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

>>> today = datetime.datetime.today() # текущая дата
>>> today
datetime.datetime(2018, 4, 21, 15, 19, 2, 515432)
>>> future = datetime.datetime(2019, 4, 21, 15, 19, 2, 515432) # дата на один год больше
>>> delta = future - today
>>> delta
datetime.timedelta(365)
>>> delta.total_seconds() # 365 дней в секундах
31536000.0

Прибавить к текущей дате 10 дней, 10 часов и 10 минут:

>>> today = datetime.datetime.today()
>>> delta = datetime.timedelta(days = 10, hours = 10, minutes = 10)
>>> future = today + delta
>>> today # 21 апреля 2018 года, 15:29
datetime.datetime(2018, 4, 21, 15, 29, 29, 265954)
>>> future # 2 мая 2018 года, 01:39
datetime.datetime(2018, 5, 2, 1, 39, 29, 265954)

How to work with dates on pandas dataframe?

pandas

df=pd.DataFrame({"A":,
                 "B": })
df.dtypes
A    object
B    object
dtype: object
df = pd.to_datetime(df)
df = pd.to_datetime(df)
df.dtypes

A    datetime64
B    datetime64
dtype: object
df = df - df

          A          B       C
0 2019-01-01 2019-03-02 60 days
1 2019-05-03 2019-08-01 90 days
2 2019-07-03 2019-10-01 90 days
df = (df - df).dt.days
df

          A          B   C
0 2019-01-01 2019-03-02  60
1 2019-05-03 2019-08-01  90
2 2019-07-03 2019-10-01  90

Get 3 months past date

from dateutil.relativedelta import *
df = df.apply(lambda x: x - relativedelta(months=3))

           A          B   C          D
0 2019-01-01 2019-03-02  60 2018-12-02
1 2019-05-03 2019-08-01  90 2019-05-01
2 2019-07-03 2019-10-01  90 2019-07-01
df = df - pd.DateOffset(months=3)

Filtering dataframe by date

Suppose you want to select only those rows where column B has values greater than 1st May, 2019.

df>datetime.datetime(2019,5,1)]

Select Data between two dates

Suppose you want to select rows from pandas dataframe between two dates (let’s say between 1st May and 30th September).

Модуль time

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

Время эпохи Unix

Это формат, в который вы должны получить отметки времени для сохранения в базах данных. Это простое число с плавающей запятой, которое можно преобразовать в целое число. Это также полезно для арифметики в секундах, так как она представляет количество секунд с 1 января 1970 года 00:00:00, и это свет памяти относительно других представлений времени, которые мы будем смотреть дальше:

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

Однако это не идеально подходит для планирования людей. Если у вас есть будущее событие, которое вы хотите провести в определенный момент времени, вы захотите сохранить это время со строкой, которая может быть проанализирована в объект datetime или сериализованный объект datetime (они будут описаны ниже).

Вы также можете представить текущее время в соответствии с предпочтениями вашей операционной системы (это означает, что он может измениться при изменении настроек вашей системы, поэтому не полагайтесь на то, чтобы это было стандартным для всех систем, как я ожидал других) , Это, как правило, удобство для пользователя, но обычно не приводит к строкам, которые можно сортировать в хронологическом порядке:

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

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

Python strptime()

Python strptime() is a class method in datetime class. Its syntax is:

Both the arguments are mandatory and should be string. This function is exactly opposite of strftime() function, which converts datetime object to a string.

We have the similar function available in time module too, where its syntax is:

Here the function returns object. If format string is not provided, it defaults to “%a %b %d %H:%M:%S %Y” which matches the formatting returned by ctime() function.

If the input string cannot be parsed according to the provided format, then is raised. The exception message provides clear details about the issue in parsing.

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

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