Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

datenum

(不推荐;请改用 datetimeduration)将日期和时间转换为日期序列值

不推荐使用 datenum。要表示时间点,请使用 datetime 数组。要表示经过的时间,请使用 durationcalendarDuration 数组。有关更新代码的详细信息,请参阅版本历史记录Replace Discouraged Instances of Serial Date Numbers and Date Strings

说明

示例

DateNumber = datenum(t) 将输入数组 t 中的 datetimeduration 值转换为日期序列值。

日期序列值表示某个固定的预设日期(0000 年 1 月 0 日)以来的整个天数及其小数值,采用前 ISO 日历形式。

DateNumber = datenum(DateString) 将表示日期时间的文本转换为日期序列值。如果已知文本中使用的格式,则将格式指定为 formatIn。不含 formatIn 的语法的执行速度远远慢于包含此项的语法执行速度。

示例

DateNumber = datenum(DateString,formatIn) 使用 formatIn 解析 DateString 所表示的日期时间。

DateNumber = datenum(DateString,PivotYear) 使用 PivotYear 解析以两个字符指定年份的文本。如果已知文本中使用的格式,则将格式指定为 formatIn。不含 formatIn 的语法的执行速度远远慢于包含此项的语法执行速度。

示例

DateNumber = datenum(DateString,formatIn,PivotYear) 使用 formatIn 解析 DateString 所表示的日期时间,使用 PivotYear 解析以两个字符指定年份的文本。可以按任一顺序指定 formatInPivotYear

示例

DateNumber = datenum(DateVector) 将日期向量解释为日期序列值,并返回由 m 个日期数字构成的列向量,其中 mDateVector 中日期向量的总数。

示例

DateNumber = datenum(Y,M,D) 返回 YMD(年、月、日)数组的对应元素的日期序列值。这些数组的大小必须相同(或者,其中任一数组可以是标量)。还可以将输入参数指定为日期向量 [Y,M,D]

DateNumber = datenum(Y,M,D,H,MN,S) 另外返回 HMNS(小时、分、秒)数组的对应元素的日期序列值。这些数组的大小必须相同(或者,其中任一数组可以是标量)。还可以将输入参数指定为日期向量 [Y,M,D,H,MN,S]

示例

全部折叠

format long 

t = [datetime('now');datetime('tomorrow')]
t = 2x1 datetime
   19-Aug-2023 14:25:09
   20-Aug-2023 00:00:00

DateNumber = datenum(t)
DateNumber = 2×1
105 ×

   7.391176008047415
   7.391180000000000

DateString = '19-May-2001';
formatIn = 'dd-mmm-yyyy';
datenum(DateString,formatIn)
ans = 730990

对于表示日期的文本,datenum 将返回一个日期数字,其格式为 'dd-mmm-yyyy'

将多个日期作为元胞数组中的字符向量进行传递。所有输入日期必须使用相同的格式。

DateString = {'09/16/2007';'05/14/1996';'11/29/2010'};
formatIn = 'mm/dd/yyyy';
datenum(DateString,formatIn)
ans = 3×1

      733301
      729159
      734471

使用默认基准年份将表示日期的文本转换为日期序列值。

n = datenum('12-jun-17','dd-mmm-yy')
n = 736858

表示此日期数字的文本是 '12-Jun-2017'

使用 1400 作为基准年份将同一文本转换为日期序列值。

n = datenum('12-jun-17','dd-mmm-yy',1400)
n = 517712

表示此日期数字的文本是 '12-Jun-1417'

datenum([2009,4,2,11,7,18])
ans = 7.3387e+05

将年、月和日值指定的日期转换为日期序列值。

n = datenum(2001,12,19)
n = 731204

输入参数

全部折叠

日期时间,指定为 datetimeduration 值的数组。datenum 函数不考虑 t 中的时区信息并且不调整在夏令时期间发生的 datetime 值。即,datenumdatetime 数组的 TimeZone 属性视为空,并将剩余日期时间信息转换为日期序列值。

数据类型: datetime | duration

日期向量指定为 m×6 或 m×3 矩阵,分别包含 m 个完整或部分日期向量。完整日期向量带有六个元素,依顺序分别指示年份、月份、日期、小时、分钟和秒。部分日期向量只带有三个元素,依顺序分别指示年份、月份和日期。DateVector 的每个元素必须为正整数或负整数值,但秒元素例外,它可以为小数。如果某元素不在常规范围内,则 datenum 会同时调整该日期向量元素及其前面的元素。例如,如果分钟元素为 70,则 datenum 会将小时元素调整 1 并将分钟元素设置为 10。如果分钟元素为 -15,则 datevec 会将小时元素减少 1 并将分钟元素设置为 45。月份值是一个例外。datenum 函数将小于 1 的月份值设置为 1

示例: [2003,10,24,12,45,07]

数据类型: double

表示日期和时间的文本,指定为字符数组(每一行包含表示一个时间点的文本)、字符向量元胞向量或字符串向量。一个字符数组中的所有行,或者一个元胞向量或字符串向量中的所有元素,必须具有相同的格式。

示例: '24-Oct-2003 12:45:07'

示例: ['19-Sep-2013';'20-Sep-2013';'21-Sep-2013']

示例: {'15-Oct-2010' '20-Nov-2012'}

如果已知文本中使用的格式,也应指定 formatIn。如果您不指定 formatIn,则 DateString 必须为以下格式之一。

表示日期时间的文本的格式

示例

'dd-mmm-yyyy HH:MM:SS'

01-Mar-2000 15:45:17

'dd-mmm-yyyy'

01-Mar-2000

'mm/dd/yyyy'

03/01/2000

'mm/dd/yy'

03/01/00

'mm/dd'

03/01

'mmm.dd,yyyy HH:MM:SS'

Mar.01,2000 15:45:17

'mmm.dd,yyyy'

Mar.01,2000

'yyyy-mm-dd HH:MM:SS'

2000-03-01 15:45:17

'yyyy-mm-dd'

2000-03-01

'yyyy/mm/dd'

2000/03/01

'HH:MM:SS'

15:45:17

'HH:MM:SS PM'

3:45:17 PM

'HH:MM'

15:45

'HH:MM PM'

3:45 PM

注意

描述日期时间格式的符号标识符不同于描述 datetime 数组的显示格式的符号标识符。

某些格式可能未包含足够的信息,无法转换日期和时间的文本表示形式。在这些情况下,小时、分钟和秒默认为 0,天默认为 1,月份默认为一月,年份默认为当前年份。datevecdatenum 将双字符年份(例如 '79')视为处于以当前年份为中心的 100 年范围内。

如果不指定 formatIn,请注意以下内容:

  • 对于将月份指定为两位数 (mm) 的格式,月份值不得大于 12。

  • 但对于格式 'mm/dd/yy',如果文本中的第一个条目大于 12,第二个条目小于或等于 12,则 datenum 将文本视为采用 'yy/mm/dd' 格式。

表示日期和时间的输入文本的格式,指定为由符号标识符组成的字符向量或字符串标量。

示例: 'dddd, mmm dd, yyyy'

下表显示了可用于构造 formatIn 字符向量的符号标识符。可以使用连字符、空格或冒号等字符来分隔字段。

注意

描述日期时间格式的符号标识符不同于描述 datetime 数组的显示格式的标识符。

符号标识符

描述

示例

yyyy

完整年份

1990, 2002

yy

两位数年份

90, 02

QQ

使用字母 Q 和一个数字的季度年份

Q1

mmmm

使用全名的月份

March, December

mmm

使用前三个字母的月份

Mar, Dec

mm

两位数月份

03, 12

m

使用大写首字母表示月份

M, D

dddd

使用全名的日期

Monday, Tuesday

ddd

使用前三个字母的日期

Mon, Tue

dd

两位数日期

05, 20

d

使用大写首字母表示日期

M, T

HH

两位数小时
(使用符号标识符 AMPM 时无前导零)

05, 5 AM

MM

两位数分钟

12, 02

SS

两位数秒

07, 59

FFF

三位数毫秒

057

AM or PM

在表示时间的文本中插入的 AMPM

3:45:02 PM

formatIn 值必须遵循以下原则:

  • 每个字段只能指定一次。例如,不能使用 'yy-mmm-dd-m',因为它有两个月份标识符。一种例外情况是,可以将一个 dd 实例与其他日期标识符的任何一个实例结合使用。例如,'dddd mmm dd yyyy' 是有效输入。

  • 当您使用 AMPM 时,还需要提供 HH 字段。

  • QQ 只能单独使用或与年份设定符一起使用。

双字符年份所在的 100 年日期范围的起始年份,指定为整数。使用基准年份来解释将年份指定为两个字符的日期。

如果 formatIn 包含一天中的时间,则将根据当前日期、月份和年份的当前时间来计算基准年份。否则,将根据当前日期、月份和年份的午夜来进行计算。

示例: 2000

注意

如果输入日期格式指定四个字符的年份,则后两个字符将被截断,由两个字符指定年份。例如,如果日期和基准年份指定为 ('25122015','ddmmyyyy',2000),则生成的日期为 25-12-2020,而不是 25-12-2015

数据类型: double

年、月和日数组,指定为数值数组。这些数组的大小必须相同,或其中任何一项可以为标量。Y,M,D 中的值必须是整数值。

如果 Y,M,D 全为标量或全为列向量,您可以将输入参数指定为日期向量 [Y,M,D]

示例: 2003,10,24

数据类型: double

年、月、日、小时、分钟和秒数组,指定为数值数组。这些数组的大小必须相同,其中任一数组可以为标量。datenum 不接受毫秒作为单独输入,它只能作为秒输入 S 的小数部分。Y,M,D,H,MN 中的值必须是整数值。

如果 Y,M,D,H,MN,S 全为标量或全为列向量,您可以将输入参数指定为日期向量 [Y,M,D,H,MN,S]

示例: 2003,10,24,12,45,07.451

数据类型: double

输出参数

全部折叠

以长度为 m 的列向量形式返回的日期序列值,其中 m 是输入日期向量或表示日期时间的字符向量的总数。

提示

  • 要创建任意形状的输出,请使用 datenum(Y,M,D)datenum(Y,M,D,H,MN,S) 语法。datenum(DateVector) 语法只能创建由日期数字构成的列向量。

    datenum(2013,[1 3; 2 4],ones(2,2))
    ans =
    
          735235      735294
          735266      735325

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开