在不同区域设置之间共享代码和数据
编写独立于区域设置的日期时间代码
与其他区域设置中的 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
指定时区信息的显示格式时,请使用 Z
或 X
标识符而非小写字母 z
,以避免创建可能在其他语言或地区中无法识别的时区名称。
将时区赋给 t
。
t.TimeZone = 'America/New_York';
指定一个与语言无关的包含时区的显示格式。
t.Format = 'dd-MM-yyyy Z'
t = datetime
25-01-2024 -0500
如果您共享文件而不共享代码,则不需要在使用 MATLAB 时编写与区域设置无关的代码。但是,当您写入文件时,请确保表示日期时间的任何文本都与语言无关。这样,其他 MATLAB 用户便可以轻松读取文件,而不必指定用于解释日期时间数据的区域设置。
用其他语言编写日期
当您使用 char
或 cellstr
函数时,请为表示日期时间的文本指定合适的格式。例如,使用 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® 所用的语言)的日期时间的文本文件,这取决于系统区域设置。将 textscan
或 readtable
函数与 DateLocale
名称-值对组参量结合使用,以指定函数在解释文件中的日期时所采用的区域设置。此外,若文件包含计算机默认编码无法识别的字符,可能还需要为其指定字符编码。
当使用
textscan
函数读取文本文件时,请在使用fopen
打开文件时指定文件编码。编码是fopen
的第四个输入参量。当使用
readtable
函数读取文本文件时,请使用FileEncoding
名称-值对参量指定与该文件关联的字符编码。