与其他区域设置中的 MATLAB® 用户共享用于处理日期时间的代码时,请遵循以下最佳做法。这些做法可确保相同的代码生成相同的输出显示,并且包含日期时间的输出文件能在不同国家/地区的系统或采用不同语言设置的系统中正常读取。
创建与语言无关的日期时间值。也就是说,创建使用月份数字而非月份名称的日期时间值,例如 01 而不是 January。避免使用星期几的名称。
例如,执行以下代码:
t = datetime('today','Format','yyyy-MM-dd')
t = datetime
2022-08-12
而非:
t = datetime('today','Format','eeee, dd-MMM-yyyy')
t = datetime
Friday, 12-Aug-2022
使用 24 小时制格式而不是 12 小时制格式来显示小时。指定日期时间值的显示格式时使用 ‘HH’ 标识符。
例如,执行以下代码:
t = datetime('now','Format','HH:mm')
t = datetime
19:39
而非:
t = datetime('now','Format','hh:mm a')
t = datetime
07:39 PM
指定时区信息的显示格式时,请使用 Z 或 X 标识符而非小写字母 z,以避免创建可能在其他语言或地区中无法识别的时区名称。
将时区赋给 t。
t.TimeZone = 'America/New_York';
指定一个与语言无关的包含时区的显示格式。
t.Format = 'dd-MM-yyyy Z'
t = datetime
12-08-2022 -0400
如果您共享文件而不共享代码,则不需要在使用 MATLAB 时编写与区域设置无关的代码。但是,当您写入文件时,请确保表示日期时间的任何文本都与语言无关。这样,其他 MATLAB 用户便可以轻松读取文件,而不必指定用于解释日期时间数据的区域设置。
当您使用 char 或 cellstr 函数时,请为表示日期时间的文本指定合适的格式。例如,使用 cellstr 将两个日期时间值转换为一个字符向量元胞数组。指定格式和区域设置,以将每个日期时间值的日期、月份和年份表示为文本。
t = [datetime('today');datetime('tomorrow')]
t = 2x1 datetime
12-Aug-2022
13-Aug-2022
S = cellstr(t,'dd. MMMM yyyy','de_DE')
S = 2x1 cell
{‘12. August 2022’}
{‘13. August 2022’}
S 是一个用德语表示日期的字符向量元胞数组。您可以将 S 导出到文本文件中,以用于区域设置为 de_DE 的系统。
可以读取包含其他语言(不同于 MATLAB® 所用的语言)的日期时间的文本文件,这取决于系统区域设置。将 textscan 或 readtable 函数与 DateLocale 名称-值对组参数结合使用,以指定函数在解释文件中的日期时所采用的区域设置。此外,若文件包含计算机默认编码无法识别的字符,可能还需要为其指定字符编码。
当使用 textscan 函数读取文本文件时,请在使用 fopen 打开文件时指定文件编码。编码是 fopen 的第四个输入参数。
当使用 readtable 函数读取文本文件时,请使用 FileEncoding 名称-值对参数指定与该文件关联的字符编码。
该博文为原创文章,未经博主同意不得转。
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/127901884