MATLAB – 日期和时间



Matlab 提供了丰富的命令来处理日期和时间。您可以以不同的格式显示日期和时间,无论是字符串还是字符向量。您还可以执行数学运算,例如对日期和时间值进行加、减、排序、连接和绘图。

以下是一些带有示例的命令,用于在 Matlab 中获取当前日期和时间。日期和时间的数组可以以不同的格式显示,在这里我们将讨论 Matlab 中表示它的不同方法。

使用 date 命令

date 命令返回当前日期,格式为 dd-MMM-yyyy 的字符向量。此格式将月份的天数 (dd) 表示为数字,月份名称 (MMM) 表示为其三个字母的缩写,年份 (yyyy) 表示为数字。返回的日期将不考虑本地时间,而是从协调世界时 (UTC) 获取当前日期。

语法

date

示例

a = date

当您在 Matlab 中执行此命令时,输出将为:

a = 30-Aug-2024

使用 datetime 命令

datetime 命令返回一个带有时间的日期,表示时间点。

  • datetime – 返回一个包含当前日期和时间的数组。
  • datetime(relativeDay) – 这里 relativeDay 可以输入“today”、“yesterday”、“tomorrow”或“now”。
  • datetime(DateStrings) – 这里 DateStrings 可以是数组格式的日期和时间。
  • datetime(DateVectors) – 日期向量是一个 m×6 或 m×3 的矩阵。对于 m×6,它将包含日、月、年、时、分和秒。对于 m×3,它将是一个包含日、月和年的矩阵。
  • datetime(Y,M,D) – 带有年、月和日的 datetime。
  • datetime(Y,M,D,H,MI,S) – 带有年、月、日、时、分和秒的 datetime。

示例 1

只需使用 datetime() 方法即可显示当前日期和时间,如下所示:

k = datetime

执行后的输出如下:

>> k = datetime

k = 

   datetime

   24-May-2023 07:56:32

>>

示例 2

此示例将以本地时区显示时间。

time_now = datetime('now','TimeZone','local','Format','d-MMM-y HH:mm:ss Z')

当您在 Matlab 命令窗口中执行相同的命令时,输出为:

>> time_now = datetime('now','TimeZone','local','Format','d-MMM-y HH:mm:ss Z')

time_now = 

   datetime

   24-May-2023 07:48:50 +0530

>>

美国/纽约时区的日期和时间。

>>  time_now = datetime('now','TimeZone','America/New_York','Format','d-MMM-y HH:mm:ss Z')

time_now = 

   datetime

   23-May-2023 22:23:01 -0400

>> 

示例 3

在此示例中,我们将日期字符串作为向量数组。

DateasStrings = {'2023-05-22';'2023-05-23'};
t = datetime(DateasStrings)

执行后,您将得到:

>>  DateasStrings = {'2023-05-22';'2023-05-23'};
t = datetime(DateasStrings)


t = 

   2×1 datetime array

   22-May-2023
   23-May-2023

>>  

您还可以将给定的数组转换为所需的格式,如下所示

DateStrings = {'2022-05-26';'2022-08-03'};
t = datetime(DateStrings, 'InputFormat','yyyy-MM-dd')

在上面,日期将转换为 yyyy-MM-dd 格式,执行后的输出如下:

>> DateStrings = {'2022-05-26';'2022-08-03'};
t = datetime(DateStrings ,'InputFormat','yyyy-MM-dd')


t = 

   2×1 datetime array

   26-May-2022
   03-Aug-2022

>> 

示例 4

您可以将年、月和日作为输入提供给 datetime,它将返回日期。

datetime(2023, 5, 12)

上面的输出为:

>> datetime(2023, 5, 12)

ans = 

   datetime

   12-May-2023

>> 

示例 5

您可以像下面这样输入年、月、日、时、分和秒:

datetime(2023,5,24,8,21,5)

执行后的输出为:

>> datetime(2023,5,24,8,21,5)

ans = 

   datetime

   24-May-2023 08:21:05

>> 

使用 Calendar 方法

此方法将为您提供指定年份和月份的日历。默认情况下,它将返回当前年份和月份的日历。

语法

calendar  // current year and month will be displayed.

calendar(y,m)  // the given year month will be displayed

calendar(d)  // Here d datetime value or text timestamp that can be year month and day .As per the value of d , the calendar for that month and year will be displayed.

示例 1

让我们检查日历的输出。

calendar

输出为:

                   May 2023
     S     M    Tu     W    Th     F     S
     0     1     2     3     4     5     6
     7     8     9    10    11    12    13
    14    15    16    17    18    19    20
    21    22    23    24    25    26    27
    28    29    30    31     0     0     0
     0     0     0     0     0     0     0

示例 2

在此示例中,年份和月份将传递给日历。

calendar(1983, 2)

输出为:

                   Feb 1983
     S     M    Tu     W    Th     F     S
     0     0     1     2     3     4     5
     6     7     8     9    10    11    12
    13    14    15    16    17    18    19
    20    21    22    23    24    25    26
    27    28     0     0     0     0     0
     0     0     0     0     0     0     0

示例 3

在此示例中,我们将使用 datetime 作为输入传递给日历,如下所示:

d = datetime("now")
calendar(d)

执行后的输出为:

>> d = datetime("now")
calendar(d)


d = 

   datetime

   24-May-2023 08:44:57

                   May 2023
     S     M    Tu     W    Th     F     S
     0     1     2     3     4     5     6
     7     8     9    10    11    12    13
    14    15    16    17    18    19    20
    21    22    23    24    25    26    27
    28    29    30    31     0     0     0
     0     0     0     0     0     0     0

>>

使用 dateshift() 方法移动日期时间

dateshift() 方法负责移动日期或生成日期和时间的序列。

语法

t = dateshift(t,'start',unit)   // Here t is the datetime.It will shift the datetime by the unit given to the start.

t = dateshift(t,'end',unit) // Here t is the datetime. It will shift the datetime by the given unit to the end.


t = dateshift(t,'dayofweek',dow) // Here datetime will be shifted to the given dayofweek, if the current date falls on the same dayofweek it will return the same date.

这里我们将尝试一些示例,例如将当前日期移动到年初。将当前日期移动到月末。

示例 1

在此示例中,当前日期 2023 年 5 月 24 日将移动到年初,即 2023 年 1 月 1 日。

t = datetime('today')
t1 = dateshift(t, 'start', 'year')

执行后的输出为:

>> t = datetime('today')
t1 = dateshift(t, 'start', 'year')


t = 

   datetime

   24-May-2023


t1 = 

   datetime

   01-Jan-2023

>>

示例 2

在此示例中,我们将当前日期移动到月末。

t = datetime('today')
t1 = dateshift(t, 'end', 'month')

执行后的输出为:

>> t = datetime('today')
t1 = dateshift(t, 'end', 'month')


t = 

  datetime

   24-May-2023


t1 = 

  datetime

   31-May-2023

>>

我们还可以使用 year 作为单位将其移动到年末。

t = datetime('today')
t1 = dateshift(t, 'end', 'year')

输出为

>> t = datetime('today')
t1 = dateshift(t, 'end', 'year')


t = 

  datetime

   24-May-2023


t1 = 

  datetime

   31-Dec-2023

>> 

日期和时间的算术运算

我们将讨论日期和时间的算术运算,例如加法和减法。通过加法,我们将获得未来的日期时间,通过减法,我们将获得过去的日期时间。像加、减、乘等运算可以对日期和时间执行,就像对其他数据类型一样。您可以使用 hours()、minutes()、days()、seconds()、years() 来对给定的日期时间进行加减。

让我们看一些例子。

示例 1

在此示例中,我们将使用 datetime() 方法来显示当前日期和时间。我们将添加 2 个小时,并显示日期时间,如下所示。

time1 = datetime('now')
time2 = time1 + hours(2)

在 Matlab 中执行后的输出如下:

>> time1 = datetime('now')
time2 = time1 + hours(2)


time1 = 

  datetime

   17-Jun-2023 17:17:52


time2 = 

  datetime

   17-Jun-2023 19:17:52

>>

如果您想要未来的日期和时间并显示向量数组,则可以按如下方式进行:

time1 = datetime('now')
time2 = time1 + hours(2:5)

执行后的输出为:

>> time1 = datetime('now')
time2 = time1 + hours(2:5)


time1 = 

  datetime

   17-Jun-2023 17:18:36


time2 = 

  1×4 datetime array

   17-Jun-2023 19:18:36   17-Jun-2023 20:18:36   17-Jun-2023 21:18:36   17-Jun-2023 22:18:36

>>

在上面的示例中,您可以看到日期时间的向量数组,它们之间的时间间隔相差 2 小时。

示例 2

在此示例中,让我们执行减法运算,如下所示。

time1 = datetime('now')
time2 = time1 - hours(2)

datetime() 方法用于提供当前日期和时间。从给定的时间中减去 2 个小时。hours(2) 用于提供小时数,类似地,您可以使用 minutes() 方法从给定的时间中减去分钟数。

>> time1 = datetime('now')
time2 = time1 - hours(2)

time1 = 

  datetime

   17-Jun-2023 17:22:27


time2 = 

  datetime

   17-Jun-2023 15:22:27

>> 

让我们也使用 minutes() 方法,如下所示。

time1 = datetime('now')
time2 = time1 - minutes(45)

执行后的输出如下:

>> time1 = datetime('now')
time2 = time1 - minutes(45)


time1 = 

  datetime

   17-Jun-2023 17:26:54


time2 = 

  datetime

   17-Jun-2023 16:41:54

>> 

让我们也尝试使用减法运算来获取向量数组,如下所示

time1 = datetime('now')
time2 = time1 - hours(2:5)

执行后的输出如下:

>> time1 = datetime('now')
time2 = time1 - hours(2:5)


time1 = 

  datetime

   17-Jun-2023 17:32:04


time2 = 

  1×4 datetime array

   17-Jun-2023 15:32:04   17-Jun-2023 14:32:04   17-Jun-2023 13:32:04   17-Jun-2023 12:32:04

>> 

示例 3

在上面的示例中,我们使用了 hours()、minutes()、datetime() 方法进行加减。现在让我们使用 days() 方法来获取未来的或过去的日期。

time1 = datetime('now')
time2 = time1 + days(5)

在上述情况下,将向当前日期添加 5 天,并显示日期时间。

执行后的输出如下:

>> time1 = datetime('now')
time2 = time1 + days(5)


time1 = 

  datetime

   17-Jun-2023 17:42:42


time2 = 

  datetime

   22-Jun-2023 17:42:42

>> 

让我们也使用 days() 方法减去并获取过去的日期时间。

time1 = datetime('now')
time2 = time1 - days(5)

执行后的输出如下:

>> time1 = datetime('now')
time2 = time1 - days(5)


time1 = 

  datetime

   17-Jun-2023 17:45:19


time2 = 

  datetime

   12-Jun-2023 17:45:19

>> 
广告