Main Content

在不同区域设置之间共享代码和数据

编写独立于区域设置的日期时间代码

与其他区域设置中的 MATLAB® 用户共享用于处理日期时间的代码时,请遵循以下最佳做法。这些做法可确保相同的代码生成相同的输出显示,并且包含日期时间的输出文件能在不同国家/地区的系统或采用不同语言设置的系统中正常读取。

创建与语言无关的日期时间值。也就是说,创建使用月份数字而非月份名称的日期时间值,例如 01 而不是 January。避免使用星期几的名称。

例如,执行以下代码:

t = datetime('today','Format','yyyy-MM-dd')
t = datetime
   2024-01-25

而非:

t = datetime('today','Format','eeee, dd-MMM-yyyy')
t = datetime
   Thursday, 25-Jan-2024

使用 24 小时制格式而不是 12 小时制格式来显示小时。指定日期时间值的显示格式时使用 'HH' 标识符。

例如,执行以下代码:

t = datetime('now','Format','HH:mm')
t = datetime
   21:37

而非:

t = datetime('now','Format','hh:mm a')
t = datetime
   09:37 PM

指定时区信息的显示格式时,请使用 ZX 标识符而非小写字母 z,以避免创建可能在其他语言或地区中无法识别的时区名称。

将时区赋给 t

t.TimeZone = 'America/New_York';

指定一个与语言无关的包含时区的显示格式。

t.Format = 'dd-MM-yyyy Z'
t = datetime
   25-01-2024 -0500

如果您共享文件而不共享代码,则不需要在使用 MATLAB 时编写与区域设置无关的代码。但是,当您写入文件时,请确保表示日期时间的任何文本都与语言无关。这样,其他 MATLAB 用户便可以轻松读取文件,而不必指定用于解释日期时间数据的区域设置。

用其他语言编写日期

当您使用 charcellstr 函数时,请为表示日期时间的文本指定合适的格式。例如,使用 cellstr 将两个日期时间值转换为一个字符向量元胞数组。指定格式和区域设置,以将每个日期时间值的日期、月份和年份表示为文本。

t = [datetime('today');datetime('tomorrow')]
t = 2x1 datetime
   25-Jan-2024
   26-Jan-2024

S = cellstr(t,'dd. MMMM yyyy','de_DE')
S = 2x1 cell
    {'25. Januar 2024'}
    {'26. Januar 2024'}

S 是一个用德语表示日期的字符向量元胞数组。您可以将 S 导出到文本文件中,以用于区域设置为 de_DE 的系统。

读取以其他语言编写的日期

可以读取包含其他语言(不同于 MATLAB® 所用的语言)的日期时间的文本文件,这取决于系统区域设置。将 textscanreadtable 函数与 DateLocale 名称-值对组参量结合使用,以指定函数在解释文件中的日期时所采用的区域设置。此外,若文件包含计算机默认编码无法识别的字符,可能还需要为其指定字符编码。

  • 当使用 textscan 函数读取文本文件时,请在使用 fopen 打开文件时指定文件编码。编码是 fopen 的第四个输入参量。

  • 当使用 readtable 函数读取文本文件时,请使用 FileEncoding 名称-值对参量指定与该文件关联的字符编码。

另请参阅

| | | |