exponenta event banner

timeofday

Время, прошедшее с полуночи для дат

Описание

пример

d = timeofday(t) возвращает массив длительностей, равный прошедшему времени с полуночи для каждого из datetime значения в t. Выходной аргумент, d, равно результату t - dateshift(t,'start','day'), и имеет тот же размер, что и t.

  • Если есть datetime значения без часового пояса, то d также равно

    e = hours(t.Hour) + minutes(t.Minute) + seconds(t.Second)

  • Если datetime значение имеет TimeZone для свойства устанавливается часовой пояс, в котором не соблюдается переход на летнее и зимнее время, d равно e.

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

Примеры

свернуть все

Создать datetime массив. Рассчитайте время, прошедшее с полуночи, для каждого datetime значение.

t = datetime('now') + hours(1:3)
t = 1x3 datetime
   23-Mar-2021 17:59:47   23-Mar-2021 18:59:47   23-Mar-2021 19:59:47

d = timeofday(t)
d = 1x3 duration
   17:59:47   18:59:47   19:59:47

Перечислить тип данных d. timeofday функция возвращает duration массив, а не datetime массив.

whos d
  Name      Size            Bytes  Class       Attributes

  d         1x3                40  duration              

Рассчитайте время, прошедшее с полуночи в день, со сменой на летнее и зимнее время.

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

tz = 'America/New_York';
fmt = 'dd-MMM-yyyy HH:mm:ss z';
t = datetime(2015,3,8,'TimeZone',tz,'Format',fmt) + hours(1:4)
t = 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

Рассчитайте истекшее время. Смена по летнему времени произошла в 02:00 8 марта 2015 года в этом часовом поясе. timeofday учитывает смену в течение времени в 02:00 на эту дату или после нее.

d = timeofday(t)
d = 1x4 duration
   01:00:00   02:00:00   03:00:00   04:00:00

Установка времени суток в datetime массив в соответствии с временем суток в другом datetime массив. Существует два способа установить время суток. Во время перехода на летнее и зимнее время используется только второй метод.

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

t1 = datetime(2015,3,7) + hours(1:4)
t1 = 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 массив. Каждый элемент имеет одинаковые компоненты даты и времени.

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

Установка времени суток в t2 по времени суток в t1.

t2 = dateshift(t2,'start','day') + timeofday(t1)
t2 = 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'.

tz = 'America/New_York';
fmt = 'dd-MMM-yyyy HH:mm:ss z';
t3 = datetime(2015,3,8,'TimeZone',tz,'Format',fmt) + hours(1:4)
t3 = 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 счет за переход на летнее и зимнее время, произошедший 8 марта 2015 года.

d = timeofday(t3)
d = 1x4 duration
   01:00:00   02:00:00   03:00:00   04:00:00

Установка времени суток в t4 по времени суток в t1. Чтобы правильно установить время суток независимо от часового пояса или дня года, используйте Hour, Minute, и Second свойства t1.

t4 = datetime(2015,3,[8 8 8 8],'TimeZone',tz,'Format',fmt);
t4.Hour = t1.Hour;
t4.Minute = t1.Minute;
t4.Second = t1.Second;
t4
t4 = 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 утра Восточного стандартного времени не существовало 8 марта 2015 года, потому что тогда произошла смена на летнее время. Второй элемент результата имеет временную составляющую 3:00 утра по восточному летнему времени.

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

свернуть все

Дата и время ввода, указанные как datetime массив.

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

См. также

| | | | |

Представлен в R2014b