Main Content

dateshift

推移日期或生成日期与时间序列

说明

示例

t2 = dateshift(t,'start',unit)datetime 数组 t 中的每个值移回 unit 指定的时间单位的开头。输出 t2 的大小与 t 相同。

例如,如果将 2021 年 6 月 27 日上午 9:14 推移到小时的开始,则推移后的值是 2021 年 6 月 27 日上午 9:00。如果您将其推移到月初,则推移后的值是 2021 年 6 月 1 日上午 12:00。

示例

t2 = dateshift(t,'end',unit) 将值前移到 unit 指定的时间单位的末尾。

  • 天、小时、分钟或秒的结束也是下一个天、小时、分钟或秒的开始。例如,如果将 2021 年 6 月 27 日上午 9:14 推移到小时的结束,则推移后的值是 2021 年 6 月 27 日上午 10:00。

  • 年、季度、月或周的结束是该年、季度、月或周的最后一天开始的午夜。例如,如果将 2021 年 6 月 27 日上午 9:14 推移到月底,则推移后的值是 2021 年 6 月 30 日上午 12:00。

示例

t2 = dateshift(t,'dayofweek',dow) 推移到指定的星期几,该日期出现在数组 t 中的每个 datetime 值的当天或之后。如果 t 中的日期已是指定的星期几,则 dateshift 返回同一日期。

示例

t2 = dateshift(t,'dayofweek','weekend') 推移到周末(周六或周日),该日期出现在数组 t 中的每个 datetime 值的当天或之后。

示例

t2 = dateshift(t,'dayofweek','weekday') 推移到工作日(周一至周五),该日期出现在数组 t 中的每个 datetime 值的当天或之后。

示例

t2 = dateshift(___,rule) 根据 rule 指定的模式推移数组 t 中的每个值。您可以将此语法与先前语法中的任何参数结合使用。

示例

全部折叠

使用当前日期创建 datetime 值。

t = datetime('today')
t = datetime
   26-Aug-2022

将日期推移到年初。

t2 = dateshift(t,'start','year')
t2 = datetime
   01-Jan-2022

使用当前日期创建 datetime 值。

t = datetime('today')
t = datetime
   26-Aug-2022

将日期推移到同一月末。

t2 = dateshift(t,'end','month')
t2 = datetime
   31-Aug-2022

创建一个 datetime 值。

t = datetime('today')
t = datetime
   26-Aug-2022

将日期推移到下个月初。

t2 = dateshift(t,'start','month','next')
t2 = datetime
   01-Sep-2022

将日期推移到下个月末。

t3 = dateshift(t,'end','month','next')
t3 = datetime
   30-Sep-2022

创建一个 datetime 数组。将其格式化以显示星期几和日期。

将日期数组向前推移到下周五。

t = [datetime(2014,08,03) datetime(2014,04,15)];
t.Format = 'eeee, dd MMM yyyy'
t = 1x2 datetime
   Sunday, 03 Aug 2014    Tuesday, 15 Apr 2014

将日期向前推移到下周五。

t2 = dateshift(t,'dayofweek','Friday')
t2 = 1x2 datetime
   Friday, 08 Aug 2014   Friday, 18 Apr 2014

将日期向后推移到上一个周一。

t3 = dateshift(t,'dayofweek','Monday','previous')
t3 = 1x2 datetime
   Monday, 28 Jul 2014   Monday, 14 Apr 2014

创建一个 datetime 数组。将其格式化以显示星期几和日期。

t = [datetime(2021,5,30) datetime(2021,6,4)];
t.Format = 'eeee, dd MMM yyyy'
t = 1x2 datetime
   Sunday, 30 May 2021   Friday, 04 Jun 2021

推移到出现在 t 中的每个值当天或之后的第一个周末。由于星期日已是周末,因此不推移第一个 datetime 值。但第二个值从周五推移到周六。

t2 = dateshift(t,'dayofweek','weekend')
t2 = 1x2 datetime
   Sunday, 30 May 2021     Saturday, 05 Jun 2021

创建一个 datetime 数组。将其格式化以显示星期几和日期。

t = [datetime(2021,5,30) datetime(2021,6,4)];
t.Format = 'eeee, dd MMM yyyy'
t = 1x2 datetime
   Sunday, 30 May 2021   Friday, 04 Jun 2021

推移到出现在 t 中的每个值当天或之后的第一个工作日。周日推移到周一。但是,由于周五已是工作日,因此不推移第二个 datetime 值。

t2 = dateshift(t,'dayofweek','weekday')
t2 = 1x2 datetime
   Monday, 31 May 2021   Friday, 04 Jun 2021

求出从今天开始落在第五周的周末的日期。

t = datetime('today');
t.Format = 'eeee, dd MMM yyyy'
t = datetime
   Saturday, 27 Aug 2022

t2 = dateshift(t,'end','week',5)
t2 = datetime
   Saturday, 01 Oct 2022

生成一个由后续三个连续星期五组成的日期序列。

t = datetime('today')
t = datetime
   27-Aug-2022

t2 = dateshift(t,'dayofweek','Friday',1:3)
t2 = 1x3 datetime
   02-Sep-2022   09-Sep-2022   16-Sep-2022

输入参数

全部折叠

日期时间输入,指定为 datetime 数组。

时间单位,指定为以下值之一:

  • 'year'

  • 'quarter'

  • 'month'

  • 'week'

  • 'day'

  • 'hour'

  • 'minute'

  • 'second'

示例: t2 = dateshift(t,'start','hour')

示例: t2 = dateshift(t,'end','month')

星期几的名称或数字,指定为字符串标量或字符向量,它是本地化的星期几或介于 1 - 7 之间的一个整数。

1 - 7 之间的整数对应于一周中的星期几,如下表所示。

1

星期日

2

星期一

3

星期二

4

星期三

5

星期四

6

星期五

7

星期六

示例: t2 = dateshift(t,'dayofweek','Sunday')

示例: t2 = dateshift(t,'dayofweek',1)

推移 datetime 值的规则,指定为 'next''previous''nearest''current'、整数标量或整数数组。

下表说明推移 datetime 值的规则。

规则描述

'next'

datetime 值推移到下一时间单位或指定的星期几。

注意:此规则是 'dayofweek' 输入参数的默认规则。

'previous'

datetime 值推移到上一时间单位或指定的星期几。

'nearest'

datetime 值推移到最接近的出现的时间单位或指定的星期几。

您可以使用此规则对 datetime 值进行舍入。

'current'

在当前时间单位内推移 datetime 值,或推移到当前周中指定的星期几。

注意:此规则是 'start''end' 输入参数的默认规则。

1

等效于 'next' 规则。

n,其中 n > 1

等效于应用 n 次的 'next' 规则。

0

等效于 'current' 规则。

-1

等效于 'previous' 规则。

-n,其中 n > 1

等效于应用 n 次的 'previous' 规则。

整数数组

根据 rule 中对应整数指定的规则,推移 t 中的每个值。

输入参数 trule 必须具有相同的大小,或其中一个必须为标量。

datetime 值与 'dayofweek' 参数匹配时的行为

如果您指定 'dayofweek',而 t 包含的 datetime 值落在该周指定的那一天,则 dateshift 会将这些 datetime 值视为上一次或下一次出现指定星期几的时间。

例如,如果 rule'next''previous''nearest'1-1,则 dateshift(datetime(2015,12,24),'dayofweek','Thursday',rule) 将返回 datetime 值 2015 年 12 月 24 日,因为这一天是星期四。

扩展功能

版本历史记录

在 R2014b 中推出

另请参阅

|