timeofday

Прошедшее время с полуночи для datetime массивы

Описание

пример

T = timeofday(DT) возвращает duration массив, значения которого равняются прошедшему времени с полуночи для каждого элемента в DT.

Для datetime массивы без часовых поясов, и в большинстве других случаев, T равно

E = hours(DT.Hour) + minutes(DT.Minute) + seconds(DT.Second)

Если DT имеет его TimeZone набор свойств к часовому поясу, который уважает Летнее время (DST), затем timeofday принимает DST во внимание. Для получения дополнительной информации см. Алгоритмы.

Выходной аргумент T также эквивалентно DT - dateshift(DT,'start','day').

пример

[T,D] = timeofday(DT) также возвращает фрагменты даты значений в DT как datetime массив D.

Выходной аргумент D эквивалентно dateshift(DT,'start','day').

Примеры

свернуть все

Создайте datetime массив.

DT = datetime('now') + hours(1:3)
DT = 1x3 datetime
   25-Aug-2021 00:46:46   25-Aug-2021 01:46:46   25-Aug-2021 02:46:46

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

T = timeofday(DT)
T = 1x3 duration
   00:46:46   01:46:46   02:46:46

Создайте datetime массив.

DT = datetime('now') + hours(1:3)
DT = 1x3 datetime
   25-Aug-2021 01:16:30   25-Aug-2021 02:16:30   25-Aug-2021 03:16:30

Возвратите фрагменты даты DT как второй datetime массив. Поскольку час, минута и вторые компоненты D все установлены в полночь (или 00:00:00 в 24-часовом формате), D отображения только даты.

[T,D] = timeofday(DT)
T = 1x3 duration
   01:16:30   02:16:30   03:16:30

D = 1x3 datetime
   25-Aug-2021   25-Aug-2021   25-Aug-2021

Вычислите прошедшие времена с полуночи в день со сдвигом Летнего времени (DST).

Создайте datetime массив. Установите его TimeZone свойство к часовому поясу, который наблюдает DST. Назначьте дату ко дню, когда сдвиг DST произошел.

tz = 'America/New_York';
fmt = 'dd-MMM-yyyy HH:mm:ss z';
DT = datetime(2015,3,8,'TimeZone',tz,'Format',fmt) + hours(1:4)
DT = 1x4 datetime
Columns 1 through 2

   08-Mar-2015 01:00:00 EST   08-Mar-2015 03:00:00 EDT

Columns 3 through 4

   08-Mar-2015 04:00:00 EDT   08-Mar-2015 05:00:00 EDT

Вычислите прошедшие времена. Сдвиг DST произошел в 02:00 8 марта 2015 в этом часовом поясе. timeofday счета на сдвиг в течение многих времен в или после 2:00 в эту дату. Установите формат T отобразить прошедшие времена в часах.

T = timeofday(DT);
T.Format = 'h'
T = 1x4 duration
   1 hr   2 hr   3 hr   4 hr

Для сравнения вычислите прошедшие времена с помощью часа, минуты и вторых компонентов DT. Это вычисление не составляет сдвиг DST.

E = hours(DT.Hour) + minutes(DT.Minute) + seconds(DT.Second)
E = 1x4 duration
   1 hr   3 hr   4 hr   5 hr

Установите время суток в datetime массив согласно времени суток в другом datetime массив.

Существует два способа установить время суток.

  • Разделите фрагменты времени от первого datetime массив при помощи timeofday и добавьте фрагменты времени во второй datetime массив.

  • Установите Hourминута, и Second компоненты второго datetime массив, равный Hourминута, и Second компоненты первого datetime массив.

Если вы используете первый путь, вы можете не всегда учет летнего времени, Экономящий Время (DST) сдвиги правильно. Только второй путь всегда правилен через любые сдвиги DST.

Создайте datetime массив. Каждый элемент имеет различный компонент времени.

DT1 = datetime(2015,3,7) + hours(1:4)
DT1 = 1x4 datetime
Columns 1 through 3

   07-Mar-2015 01:00:00   07-Mar-2015 02:00:00   07-Mar-2015 03:00:00

Column 4

   07-Mar-2015 04:00:00

Создайте второй datetime массив. Каждый элемент имеет те же компоненты даты и времени.

DT2 = datetime(2015,3,[8 8 8 8])
DT2 = 1x4 datetime
   08-Mar-2015   08-Mar-2015   08-Mar-2015   08-Mar-2015

Установите время суток в DT2 согласно времени суток в DT1. Поскольку DT1 и DT2 не имейте часовых поясов, их компоненты времени идентичны.

DT2 = dateshift(DT2,'start','day') + timeofday(DT1)
DT2 = 1x4 datetime
Columns 1 through 3

   08-Mar-2015 01:00:00   08-Mar-2015 02:00:00   08-Mar-2015 03:00:00

Column 4

   08-Mar-2015 04:00:00

Создайте datetime массив с элементами, которые имеют TimeZone набор свойств к 'America/New_York'. Поскольку DT3 имеет часовой пояс и сдвиг DST, который происходит 8 марта 2015, компоненты времени DT3 различные как те из DT1.

tz = 'America/New_York';
fmt = 'dd-MMM-yyyy HH:mm:ss z';
DT3 = datetime(2015,3,8,'TimeZone',tz,'Format',fmt) + timeofday(DT1)
DT3 = 1x4 datetime
Columns 1 through 2

   08-Mar-2015 01:00:00 EST   08-Mar-2015 03:00:00 EDT

Columns 3 through 4

   08-Mar-2015 04:00:00 EDT   08-Mar-2015 05:00:00 EDT

Отобразите прошедшие времена с полуночи. timeofday счета на сдвиг DST. Прошедшие времена показывают что времена в DT3 являются неправильными. В прошлый раз в DT3 соответствует 5:00. Но в DT1 только четыре часа протекли с полуночи.

T = timeofday(DT3)
T = 1x4 duration
   01:00:00   02:00:00   03:00:00   04:00:00

Установить время суток DT4 правильно независимо от часового пояса или день года, используйте Hourминута, и Second свойства DT1.

DT4 = datetime(2015,3,[8 8 8 8],'TimeZone',tz,'Format',fmt);
DT4.Hour = DT1.Hour;
DT4.Minute = DT1.Minute;
DT4.Second = DT1.Second;
DT4
DT4 = 1x4 datetime
Columns 1 through 2

   08-Mar-2015 01:00:00 EST   08-Mar-2015 03:00:00 EDT

Columns 3 through 4

   08-Mar-2015 03:00:00 EDT   08-Mar-2015 04:00:00 EDT

В этом часовом поясе, 2:00 a.m. Восточное стандартное время не существовало 8 марта 2015, потому что сдвиг DST произошел затем. Второй элемент результата имеет компонент времени 3:00 a.m. Восточное поясное время.

Входные параметры

свернуть все

Введите даты и времена в виде datetime массив.

Выходные аргументы

свернуть все

Фрагменты времени входного массива, возвращенного как duration массив.

Фрагменты даты входного массива, возвращенного как datetime массив.

Алгоритмы

datetime массив может иметь свой TimeZone набор свойств к часовому поясу, который наблюдает Летнее время (DST). timeofday функция принимает DST во внимание.

  • Если входной параметр DT datetime массив без часового пояса, затем выход T также равно

    E = hours(DT.Hour) + minutes(DT.Minute) + seconds(DT.Second)

  • Если DT имеет его TimeZone набор свойств к часовому поясу, который не наблюдает DST, затем T равно E.

  • Если DT имеет его TimeZone набор свойств к часовому поясу, который наблюдает DST, затем timeofday счета на DST переключают в дни, когда сдвиг происходит. В те дни в течение многих времен после того, как сдвиг DST происходит, T отличается от E суммой сдвига.

Расширенные возможности

Смотрите также

| | | | |

Введенный в R2014b