Python timedelta

Рекантралирование

Учитывая конкретное значение dateTime, вы можете изменить его в определенный момент времени, введя его в качестве второго параметра.

Например, скажем, у нас есть определенный день, но только хочу месяц:

# 22nd November 2000
>>> day = np.datetime64('2000-11-22')
 
# Just keep the month
>>> month = np.datetime64(day, 'M')
numpy.datetime64('2000-11')
 
# Change the scale of month to hours
>>> hour_from_month = np.datetime64(month, 'h')
numpy.datetime64('2000-11-01T00','h')
 
# Change the scale of day to hours
>>> hour_from_day = np.datetime64(day, 'h')
numpy.datetime64('2000-11-22T00','h')

Обратите внимание, что часть DD для и разные. Первый имеет 01 и последний 22

Это потому, что numpy возвращается к значениям по умолчанию, если никто не указан. Это логически, 01 для M и D и 0 для переменных времени.

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

>>> day.dtype
dtype('>> month.dtype
dtype('')')>

Легко.

Автоисправление даты

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

Пример:

Неправильные компоненты даты автоматически распределяются по остальным.

Предположим, нам требуется увеличить дату «28 февраля 2016» на два дня. В зависимости от того, високосный это год или нет, результатом будет «2 марта» или «1 марта». Нам об этом думать не нужно. Просто прибавляем два дня. Объект позаботится об остальном:

Эту возможность часто используют, чтобы получить дату по прошествии заданного отрезка времени. Например, получим дату «спустя 70 секунд с текущего момента»:

Также можно установить нулевые или даже отрицательные значения. Например:

Форматирование даты с помощью strftime()

from datetime import datetime

# current date and time
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)

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

time: 04:34:52
s1: 12/26/2018, 04:34:52
s2: 26/12/2018, 04:34:52

Здесь % Y,% m,% d,% H и т.д. являются кодами формата. Метод strftime() принимает один или несколько кодов формата и возвращает на его основе отформатированную строку.

В приведенной выше программе t  s1 и s2 -‒ это строки:

  • % Y — год
  • % m — месяц
  • % d — день
  • % H — час [00, 01, …, 22, 23
  • % M — минута
  • % S — секунда

Формат ввода – ISO 8601

Разные страны пишут своими даты по-разному. В Европе 06/10/18 – 6 октября, а в Америке 10 июня. Лично, это может быть раздражает, но в бизнесе, это критично (представьте, что ваша программа работает до 6 октября, когда вы хотели, чтобы она остановилась 10 июня)! Итак, нам нужен стандартизированный вход для наших функций. К счастью, глобальный стандарт уже существует ISO 8601 Отказ

Основы:

  • Yyyy-mm-dd Для дат, так 2018-10-06 6 октября 2018 года
  • HH: мм: SS Время, так 13:21:40 13:21 (13,21 вечера) и 40 секунд
  • Для миллисекунды используйте полный стоп, 13: 21: 40.3 (Добавление 3 миллисекунды).

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

Это будет важно позже, когда мы сделаем арифметику с объекты

Чтобы ввести это на Numpy, мы можем либо

  • Поместите пространство между датой и временем
  • Или поставить столицу между ними

Я предпочитаю первый метод, так как легче читать

Но обратите внимание, что если вы распечатаете любой Функции, Numpy всегда вставляют Отказ. Теперь пришло время для наших первых примеров (я пытался выбрать даты, которые легко читать для обучения)

Теперь пришло время для наших первых примеров (я пытался выбрать даты, которые легко читать для обучения).

# 2000
>>> np.datetime64('2000')
 
# November 2000
>>> np.datetime64('2000-11')
 
# 22nd November 2000
>>> np.datetime64('2000-11-22')
 
# 7th June 1987 at 16:22:44 (twenty two minutes past four in the afternoon and forty four seconds)
>>> np.datetime64('2000-11-22 16:22:44')
numpy.datetime64('2000-11-22T16:22:44')

Класс datetime.time

Экземпляр класса представляет собой время (часы, минуты, секунды и микросекунды).

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

from datetime import time

# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a)

# time(hour, minute and second)
b = time(11, 34, 56)
print("b =", b)

# time(hour, minute and second)
c = time(hour = 11, minute = 34, second = 56)
print("c =", c)

# time(hour, minute, second, microsecond)
d = time(11, 34, 56, 234566)
print("d =", d)

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

Пример 8: вывод часов, минут, секунд и микросекунд.

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

from datetime import time

a = time(11, 34, 56)

print("hour =", a.hour)
print("minute =", a.minute)
print("second =", a.second)
print("microsecond =", a.microsecond)

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

Обратите внимание, что мы не передали аргумент. Следовательно, его значение по умолчанию будет равно 0

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

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

from datetime import datetime
import pytz

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


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

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

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

Local time: 2018-12-20 13:10:44.260462
America/New_York time: 2018-12-20 13:10:44.260462
Europe/London time: 2018-12-20 13:10:44.260462	

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

Было полезно224
Нет28

480cookie-checkКак управлять датой и временем в Python?

Использование сторонних библиотек

Модуль datetime в Python может преобразовывать все разные типы строк в объект. Но основная проблема в том, что для этого вам нужно создать соответствующую строку кода форматирования, которую может понять strptime. Создание этой строки требует времени и затрудняет чтение кода. Вместо этого мы можем использовать другие сторонние библиотеки, чтобы упростить задачу.

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

Давайте рассмотрим некоторые из этих библиотек в следующих разделах.

Модуль 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.
  • — преобразует кортеж или объект во время в секундах.
  • — приостановить выполнение программы на заданное количество секунд.
  • — преобразует кортеж или в строку по формату.

Структура TimeSpan

Структура TimeSpan представляет интервал времени. Ее обычно используют двумя способами:

  • для отражения интервала времени между двумя значениями даты и времени (например, при вычитании одного значения DateTime из другого возвращается значение TimeSpan );

  • для измерения прошедшего времени. Например, Stopwatch.Elapsed свойство возвращает TimeSpan значение, отражающее интервал времени, прошедший с момента вызова одного из Stopwatch методов, которые начинают измерять прошедшее время.

TimeSpanЗначение может также использоваться в качестве замены DateTime значения, когда это значение отражает время без ссылки на конкретный день. Это использование аналогично DateTime.TimeOfDay DateTimeOffset.TimeOfDay свойствам и, возвращающим TimeSpan значение, которое представляет время без ссылки на дату. Например, структуру TimeSpan можно использовать для представления ежедневного времени открытия или закрытия магазина или времени, в которое происходит любое регулярное событие.

В примере ниже определяется структура , которая включает объекты TimeSpan , представляющие время закрытия и открытия магазина, а также объект TimeZoneInfo , представляющий часовой пояс магазина. Структура также включает два метода, и , указывающие, открыт ли магазин в то время, которое указал пользователь, предположительно находящийся в местном часовом поясе.

Затем клиентский код может использовать структуру , как показано ниже.

4 ответа

Лучший ответ

Чтобы сделать это максимально простым для работы, есть два шага: преобразование timedelta в int или float и сохранение его в хранилище данных. Перво-наперво, преобразование таймделты в микротайм:

Однако вам не нужно выполнять преобразование самостоятельно — вы можете определить собственное свойство хранилища данных, которое позволит вам хранить временные интервалы непосредственно в вашей модели:

Теперь вы можете использовать это свойство как любое другое:

12

Nick Johnson
10 Мар 2010 в 10:20

В конечном итоге это сработало:

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

Sologoub
10 Мар 2010 в 04:37

Если вы собираетесь хранить его как (что, я согласен, хорошая идея), я бы расширил — тогда вы получите различные биты для анализа и проверки бесплатно.

Кроме того , хранение как как может быть намного легче , чем другие методы, указанные здесь , путем сохранения его в качестве DateTime на некотором расстоянии от опорной DateTime , таким образом, что разность представляет timedelta . Это действительно легко благодаря перегрузке оператора, который дает нам модуль datetime.

Точность

в Python может обрабатывать дельты примерно +/- 2,7 миллиона лет. Тем не менее, охватывает только диапазон около 10000 лет. Чтобы сохранить большую временную дельту в дате и времени, вам придется сделать некоторые изменения и пожертвовать некоторой точностью.

Приведенный выше подход ограничивает временные интервалы до половины этого диапазона — около +/- 5000 лет из-за выбора эталонной даты и времени.

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

1

Stu Cox
20 Май 2012 в 13:25

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

Brian Luft
10 Мар 2010 в 00:40

Полный список кодов символов

Помимо символьных строк, приведенных выше, метод strftime принимает несколько других директив для форматирования значений даты:

  • % a: возвращает первые три символа дня недели, например среда.
  • % A: возвращает полное название дня недели, например среда.
  • % B: возвращает полное название месяца, например, сентябрь.
  • % w: возвращает день недели в виде числа от 0 до 6, при этом воскресенье – 0.
  • % m: возвращает месяц в виде числа от 01 до 12.
  • % p: возвращает AM и PM для времени.
  • % y: возвращает год в двузначном формате, то есть без века. Например, «18» вместо «2018».
  • % f: возвращает микросекунду от 000000 до 999999.
  • % Z: возвращает часовой пояс.
  • % z: возвращает смещение по всемирному координированному времени.
  • % j: возвращает номер дня в году от 001 до 366.
  • % W: возвращает номер недели в году от 00 до 53, при этом понедельник считается первым днем недели.
  • % U: возвращает номер недели в году от 00 до 53, при этом воскресенье считается первым днем каждой недели.
  • % c: возвращает местную версию даты и времени.
  • % x: возвращает локальную версию даты.
  • % X: возвращает локальную версию времени.

Рассмотрим следующий пример:

import datetime

x = datetime.datetime(2018, 9, 15)

print(x.strftime('%b/%d/%Y'))

Вывод:

Sep/15/2018

А вот как получить только месяц:

print(x.strftime('%B'))

Вывод:

September

Покажем год:

print(x.strftime('%Y'))

Вывод:

2018

В этом примере мы использовали код формата% Y

Обратите внимание, что Y находится в верхнем регистре. Теперь напишите это в нижнем регистре:

print(x.strftime('%y'))

Вывод:

18

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

datetime.timedelta

A object represents the difference between two dates or times.

Example 11: Difference between two dates and times

When you run the program, the output will be:


t3 = 201 days, 0:00:00
t6 = -333 days, 1:14:20
type of t3 = <class 'datetime.timedelta'>
type of t6 = <class 'datetime.timedelta'>

Notice, both t3 and t6 are of type.

Example 12: Difference between two timedelta objects

When you run the program, the output will be:


t3 = 14 days, 13:55:39

Here, we have created two objects t1 and t2, and their difference is printed on the screen.

When you run the program, the output will be:


t3 = -1 day, 23:59:39
t3 = 0:00:21

Example 14: Time duration in seconds

You can get the total number of seconds in a timedelta object using method.

When you run the program, the output will be:


total seconds = 435633.233423

You can also find sum of two dates and times using operator. Also, you can multiply and divide a object by integers and floats.

Класс TimeZoneInfo

Класс TimeZoneInfo class represents any of the Earth’s time zones, and enables the conversion of any date and time in one time zone to its equivalent in another time zone. Класс TimeZoneInfo позволяет работать со значениями даты и времени, обеспечивая однозначную идентификацию единственного момента времени с помощью любого значения даты и времени. Класс TimeZoneInfo также является расширяемым. Хотя он зависит от сведений о часовом поясе, предоставленных для систем Windows и определенных в реестре, он поддерживает создание настраиваемых часовых поясов. Кроме того, он поддерживает сериализацию и десериализацию сведений о часовом поясе.

В некоторых случаях использование всех преимуществ класса TimeZoneInfo может потребовать дальнейших усилий по разработке. Если значения даты и времени не тесно связаны с часовыми поясами, к которым они относятся, требуется дополнительная работа. Если приложение не предоставляет какой-либо механизм для связывания даты и времени со связанным часовым поясом, то определенное значение даты и времени можно легко привязать к его часовому поясу. Одним из способов связывания этой информации является определение класса или структуры, содержащих значение даты и времени и связанный с ним часовой пояс.

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

C# format time

A date and time format string defines the text representation of a
or value that results from a formatting operation.
There are two types of format specifiers: standard and custom. A custom date and time
format string consists of two or more characters.

Program.cs

using System;

DateTime now = DateTime.Now;

Console.WriteLine(now.ToString("d"));
Console.WriteLine(now.ToString("D"));
Console.WriteLine(now.ToString("F"));
Console.WriteLine(now.ToString("M"));
Console.WriteLine(now.ToString("o"));
Console.WriteLine(now.ToString("R"));
Console.WriteLine(now.ToString("t"));
Console.WriteLine(now.ToString("T"));
Console.WriteLine(now.ToString("Y"));

The example prints today’s date using some of the standard format specifiers.

Console.WriteLine(now.ToString("d"));

The specifier creates a short date pattern.

Console.WriteLine(now.ToString("D"));

The specifier creates a long date pattern.

Console.WriteLine(now.ToString("F"));

The specifier creates a full date and time pattern.

Console.WriteLine(now.ToString("M"));

The specifier creates a month and day pattern.

Console.WriteLine(now.ToString("o"));

The specifier creates a round-trip date and time pattern.
In this pattern, the date and time parts are separated by the
character and the time zone bias is appended at the end of the string.

Console.WriteLine(now.ToString("R"));

The specifier creates an RFC1123 date and time pattern.

Console.WriteLine(now.ToString("t"));

The specifier creates a short time pattern.

Console.WriteLine(now.ToString("T"));

The specifier creates a long time pattern.

Console.WriteLine(now.ToString("Y"));

The specifier creates a year and month pattern.

$ dotnet run
10/27/2020
Tuesday, October 27, 2020
Tuesday, October 27, 2020 10:09:01 AM
October 27
2020-10-27T10:09:01.2686960+01:00
Tue, 27 Oct 2020 10:09:01 GMT
10:09 AM
10:09:01 AM
October 2020

This is the output of the example.

Custom format specifiers allow us to create customized date and time format
patterns.

Program.cs

using System;

DateTime now = DateTime.Now;

Console.WriteLine(now.ToString("ddd MMM %d, yyyy"));
Console.WriteLine(now.ToString("hh:mm:ss tt"));

The example prints a date and a time format using custom
specifiers.

Console.WriteLine(now.ToString("ddd MMM %d, yyyy"));

The specifier is the abbreviated name of
the day of the week, the is the
abbreviated name of the month, the is the day of
the month, from 1 through 31. In the context of custom specifiers,
it must be preceded with the character. Finally,
the is the year as a four-digit number.

Console.WriteLine(now.ToString("hh:mm:ss tt"));

The specifier is the hour, using a 12-hour clock from 01 to 12,
the is the minute, from 00 through 59, the is
the second, from 00 through 59, and the is the AM/PM designator.

$ dotnet run
Tue Oct 27, 2020
10:10:57 AM

This is the output of the program.

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

Alternatives to Python datetime and dateutil

Python and are a powerful combination of libraries when you’re working with dates and times. is even recommended in the Python documentation. However, there are many other libraries that you can use to work with dates and times in Python. Some of these rely on and , while others are completely independent replacements:

  • pytz provides time zone information similar to . It uses a somewhat different interface than the standard , so be aware of the potential problems if you decide to use it.
  • Arrow provides a drop-in replacement for . It’s inspired by , so if you’re coming from web development, then this might be a more familiar interface.
  • Pendulum provides another drop-in replacement for . It includes a time zone interface and an improved implementation.
  • Maya provides a similar interface as . It relies on Pendulum for parts of the parsing library.
  • dateparser provides an interface to generate instances from human-readable text. It’s flexible and supports many languages.

In addition, if you work heavily with NumPy, Pandas, or other data science packages, then there are a few options that might be useful to you:

List of the Date format codes:

Directive Meaning Example Notes
%a Weekday as locale’s abbreviated name. Sun, Mon, …, Sat (en_US);
So, Mo, …, Sa (de_DE)
(1)
%A Weekday as locale’s full name. unday, Monday, …, Saturday (en_US);
Sonntag, Montag, …, Samstag (de_DE)
(1)
%w Weekday as a decimal number, where 0 is Sunday and 6 is Saturday. 0, 1, …, 6
%d Day of the month as a zero-padded decimal number. 01, 02, …, 31 (9)
%b Month as locale’s abbreviated name. Jan, Feb, …, Dec (en_US);
Jan, Feb, …, Dez (de_DE)
(1)
%B Month as locale’s full name. January, February, …, December (en_US);
Januar, Februar, …, Dezember (de_DE)
(1)
%m Month as a zero-padded decimal number. 01, 02, …, 12 (9)
%y Year without century as a zero-padded decimal number. 00, 01, …, 99 (9)
%Y Year with century as a decimal number. 0001, 0002, …, 2013, 2014, …, 9998, 9999 (2)
%H Hour (24-hour clock) as a zero-padded decimal number. 00, 01, …, 23 (9)
%I Hour (12-hour clock) as a zero-padded decimal number. 01, 02, …, 12 (9)
%p Locale’s equivalent of either AM or PM. AM, PM (en_US);
am, pm (de_DE)
(1), (3)
%M Minute as a zero-padded decimal number. 00, 01, …, 59 (9)
%S Second as a zero-padded decimal number. 00, 01, …, 59 (4), (9)
%f Microsecond as a decimal number, zero-padded on the left. 000000, 000001, …, 999999 (5)
%z UTC offset in the form ±HHMM] (empty string if the object is naive). (empty), +0000, -0400, +1030, +063415, -030712.345216 (6)
%Z Time zone name (empty string if the object is naive). (empty), UTC, EST, CST
%j Day of the year as a zero-padded decimal number. 001, 002, …, 366 (9)
%U Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0. 00, 01, …, 53 (7), (9)
%W Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0. 00, 01, …, 53 (7), (9)
%c Locale’s appropriate date and time representation. Tue Aug 16 21:30:00 1988 (en_US);
Di 16 Aug 21:30:00 1988 (de_DE)
(1)
%x Locale’s appropriate date representation. 08/16/88 (None);
08/16/1988 (en_US);
16.08.1988 (de_DE)
(1)
%X Locale’s appropriate time representation. 21:30:00 (en_US);
21:30:00 (de_DE)
(1)
%% A literal ‘%’ character. %

Test your Python skills with w3resource’s quiz

C# DateTime properties

represents an instant in time. Its properties provide
various aspects of the date and time.

Program.cs

using System;

string[] months = {"January", "February", "March", "April", "May",
    "June", "July", "September", "October", "November", "December"};

DateTime now = DateTime.Now;

Console.WriteLine("Today's date: {0}", now.Date);
Console.WriteLine("Today is {0} day of {1}", now.Day, months);
Console.WriteLine("Today is {0} day of {1}", now.DayOfYear, now.Year);
Console.WriteLine("Today's time: {0}", now.TimeOfDay);
Console.WriteLine("Hour: {0}", now.Hour);
Console.WriteLine("Minute: {0}", now.Minute);
Console.WriteLine("Second: {0}", now.Second);
Console.WriteLine("Millisecond: {0}", now.Millisecond);
Console.WriteLine("The day of week: {0}", now.DayOfWeek);
Console.WriteLine("Kind: {0}", now.Kind);

The example examines the properties of the object.

DateTime now = DateTime.Now;

A object is created. The is set to
the current local date and time on this computer.

Console.WriteLine("Today's date: {0}", now.Date);

The property gets the date component of the
instance.

Console.WriteLine("Today is {0} day of {1}", now.Day, months);

The property gets the day of the month. The
property returns the month component, expressed as a value between 1 and 12.

Console.WriteLine("Today is {0} day of {1}", now.DayOfYear, now.Year);

The property gets the day of the year, and the
gets the year.

Console.WriteLine("Today's time: {0}", now.TimeOfDay);

The property gets the time of day of the
instance.

Console.WriteLine("Hour: {0}", now.Hour);
Console.WriteLine("Minute: {0}", now.Minute);
Console.WriteLine("Second: {0}", now.Second);
Console.WriteLine("Millisecond: {0}", now.Millisecond);

The , , , and
are parts of the time component.

Console.WriteLine("The day of week: {0}", now.DayOfWeek);

The property gets the day of the week.

Console.WriteLine("Kind: {0}", now.Kind);

The property returns a value that indicates whether the
time represented by this instance is based on local time,
Coordinated Universal Time (UTC), or neither.

$ dotnet run
Today's date: 10/27/2020 12:00:00 AM
Today is 27 day of November
Today is 301 day of 2020
Today's time: 09:42:40.6173526
Hour: 9
Minute: 42
Second: 40
Millisecond: 617
The day of week: Tuesday
Kind: Local

This is a sample output of the program.

Python DateTime для строки

Вы можете конвертировать большинство объектов в строку с помощью STR () встроенного метода.

В этом руководстве мы будем преобразовать объект Python DateTime для строки с использованием встроенной функции str () и метода dateTime.dateTime.strftime ().

Синтаксис str () что мы будем использовать, показано ниже

datetimeString = str(datetimeObject)

Синтаксис strftime () показано ниже

datetimeString = datetimeObject.strftime(format_string)

Приведены примеры обоих этих сценариев.

Пример 1: преобразовать dateTime в строку

В этом примере мы получим текущее время, используя Отказ Возвращает объект типа класса Отказ Мы преобразуем объект DateTime в String, используя Отказ И распечатайте строку и его тип в консоль, просто чтобы убедиться.

Python Program

import datetime

#get current date and time
x = datetime.datetime.now()

#convert date and time to string
dateTimeStr = str(x)

#print the date and time string
print(dateTimeStr)

#print the type of dateTimeStr
print(type(dateTimeStr))

Выход

2019-12-10 05:19:10.982569

Мы преобразовали объект DateTime в String.

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

Python Program

import datetime

#get current date and time
x = datetime.datetime.now()

#convert date and time to string
dateTimeStr = str(x)

#just the date
print(dateTimeStr)

Выход

2019-12-10

Объяснение

При нанесении STR (DateTimeObject) требуется метод DateTime .__ STR__ (). И вызов STR (DateTimeObject) эквивалентен DateTimeObject.isoformat (”).

В следующем примере мы будем инициализировать объект DateTime и проверьте результаты, когда мы преобразуем его в строку, а также при печати с ISOFormat (”).

Python Program

import datetime

x = datetime.datetime(2020, 1, 1, 12, 30, 59, 0)

#convert the datetime object to string
datetimeStr = str(x)
print(datetimeStr)

#print the iso format of datetime object
print(x.isoformat(' '))

Выход

2020-01-01 12:30:59
2020-01-01 12:30:59

Формат TateTime String.

Вы также можете контролировать результат, когда вы преобразуете объект DateTime в String, используя метод STRFTIME ().

strftime () принимает строку формата и возвращает dateTime, отформатированный в этот формат.

Python Program

import datetime

x = datetime.datetime(2020, 1, 1, 12, 30, 59, 0)

#convert the datetime object to string of specific format
datetimeStr = x.strftime("%Y %B, %A %w, %H hours %M minutes")
print(datetimeStr)

Выход

2020 January, Wednesday 3, 12 hours 30 minutes

Узнайте больше о формате Python DateTime.

Резюме

В этом руководстве примеров Python мы узнали, как преобразовать объект DateTime на String, с помощью хорошо подробных примеров.

What is TimeTuple?

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

Index Field Values
4-digit year 2008
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

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

Index Attributes Values
tm_year 2008
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

C# TimeSpan

A structure represents a time interval.

Program.cs

using System;

string startTime = "7:00 AM";
string endTime = "8:30 PM";

TimeSpan elapsed = DateTime.Parse(endTime).Subtract(DateTime.Parse(startTime));

Console.WriteLine($"Time elapsed: {elapsed}");

In the example, we subtract two time values.

string startTime = "7:00 AM";
string endTime = "8:30 PM";

We define two time values expressed as strings.

TimeSpan elapsed = DateTime.Parse(endTime).Subtract(DateTime.Parse(startTime));

The method is used to subtract two time values. The
method converts the string representation of a time interval
to a object.

$ dotnet run
Time elapsed: 13:30:00

The difference is 13 hours and 30 minutes.

In the following example, we subtract two date values.

Program.cs

using System;

DateTime now = DateTime.Today;
DateTime borodino_battle = new DateTime(1812, 9, 7);

TimeSpan diff = now - borodino_battle;

Console.WriteLine($"{diff.TotalDays} days have passed since the Battle of Borodino.");

In the example, we compute the number of days passed since the Borodino battle.

DateTime now = DateTime.Today;
DateTime borodino_battle = new DateTime(1812, 9, 7);

We define two objects: one for today and one for the date
of the Borodino battle.

TimeSpan diff = now - borodino_battle;

By subtracting those two objects, we get a object.

Console.WriteLine($"{diff.TotalDays} days have passed since the Battle of Borodino.");

The property has the number of days of the elapsed time.

$ dotnet run
76021 days have passed since the Battle of Borodino.

On October 27, 2019, 76021 days have passed since the Battle of Borodino.

Структура DateTime

Значение DateTime определяет конкретную дату и время. Он включает Kind свойство, которое предоставляет ограниченные сведения о часовом поясе, к которому относится эта дата и время. Значение DateTimeKind , возвращаемое свойством Kind , указывает, представляет ли значение DateTime местное время (), время в формате UTC () или неопределенное время ().

DateTimeСтруктура подходит для приложений с одной или несколькими из следующих характеристик.

работают только с датами;

работают только со временем;

работают с абстрактными датами и временем;

работают с датами и временем, для которых отсутствуют сведения о часовом поясе;

работают только с датами и временем в формате UTC;

получение сведений о дате и времени из источников за пределами .net, например SQL баз данных. (как правило, информация о дате и времени хранится в этих источниках в простом формате, который совместим со структурой DateTime );

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

Например, в операции сложения, которая добавляет шесть месяцев к определенным дате и времени, часто не важно, корректируется ли результат с учетом перехода на летнее время.

Кроме случая, когда определенное значение DateTime представляет время в формате UTC, значение даты и времени часто является неоднозначным или ограниченным в плане возможности переноса. Например, если значение DateTime представляет местное время, оно является переносимым внутри местного часового пояса (то есть если значение десериализуется в другой системе в том же часовом поясе, оно по-прежнему однозначно определяет конкретный момент времени). За пределами местного часового пояса значение DateTime может иметь несколько интерпретаций. Если свойство Kind имеет значение , значение даты и времени становится еще менее переносимым: в этом случае оно неоднозначно даже в том же часовом поясе и, возможно, даже на том же компьютере, на котором оно было впервые сериализовано. Значение DateTime однозначно идентифицирует момент времени независимо от времени системы или часового пояса, в котором оно используется, только если это значение представляет время в формате UTC.

Важно!

При сохранении или совместном использовании данных DateTime следует использовать формат UTC, а для свойства DateTime значения Kind должно быть задано значение .

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

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

Adblock
detector