Main Content

ロケール間でのコードとデータの共有

ロケールに依存しない日付と時刻のコードの作成

日付と時刻を処理するコードを他のロケールの MATLAB® ユーザーと共有する場合、これらのベスト プラクティスに従います。これらのプラクティスにより、同じコードから必ず同じ出力が表示され、国や言語設定の異なるシステムで日付と時刻を含む出力ファイルが必ず正確に読み取られるようにします。

言語に依存しない datetime 値を作成します。つまり、January ではなく 01 のように、月の名前ではなく月番号を使用する datetime 値を作成します。曜日名は使用しないでください。

たとえば、次のようにします。

t = datetime('today','Format','yyyy-MM-dd')
t = datetime
   2024-07-20

次は使用しません。

t = datetime('today','Format','eeee, dd-MMM-yyyy')
t = datetime
   Saturday, 20-Jul-2024

時間の表示には 12 時間制ではなく 24 時間制を使用します。datetime 値の表示形式を指定する場合、'HH' 識別子を使用します。

たとえば、次のようにします。

t = datetime('now','Format','HH:mm')
t = datetime
   14:43

次は使用しません。

t = datetime('now','Format','hh:mm a')
t = datetime
   02:43 PM

タイム ゾーン情報の表示形式を指定する場合、小文字の z ではなく ZX といった識別子を使用して、他の言語や地域で認識されないタイム ゾーン名が作成されないようにします。

t にタイム ゾーンを割り当てます。

t.TimeZone = 'America/New_York';

タイム ゾーンを含む、言語に依存しない表示形式を指定します。

t.Format = 'dd-MM-yyyy Z'
t = datetime
   20-07-2024 -0400

ファイルを共有してもコードを共有しない場合は、MATLAB での作業時にロケールに依存しないコードを作成する必要はありません。ただし、ファイルに書き込む際には、日付や時刻を表すテキストが言語に依存しないことを確認します。そうすると、他の MATLAB ユーザーが、日付と時刻のデータを解釈するロケールを指定せずにファイルを簡単に読み取ることができます。

別の言語での日付の作成

関数 char または cellstr を使用する場合、日付と時刻を表すテキストに適した形式を指定します。たとえば、cellstr を使用して、2 つの datetime 値を文字ベクトルの cell 配列に変換します。各 datetime 値の年月日をテキストとして表す形式とロケールを指定します。

t = [datetime('today');datetime('tomorrow')]
t = 2x1 datetime
   20-Jul-2024
   21-Jul-2024

S = cellstr(t,'dd. MMMM yyyy','de_DE')
S = 2x1 cell
    {'20. Juli 2024'}
    {'21. Juli 2024'}

S は、日付をドイツ語で表す文字ベクトルの cell 配列です。S をテキスト ファイルにエクスポートして、de_DE ロケールのシステムで使用できます。

別の言語での日付の読み取り

ご利用のシステム ロケールに応じて MATLAB® が使用している言語とは異なる言語の、日付と時刻を含むテキスト ファイルを読み取ることができます。関数 textscan または関数 readtable を名前と値のペアの引数 DateLocale とともに使用して、関数がファイル内の日付を解釈するロケールを指定します。また、コンピューターの既定のエンコードで認識されない文字を含むファイルの、文字エンコードの指定が必要な場合もあります。

  • 関数 textscan を使用してテキスト ファイルを読み取る場合、fopen でファイルを開くときにファイル エンコードを指定してください。エンコードは fopen の 4 番目の入力引数です。

  • 関数 readtable を使用してテキスト ファイルを読み取る場合は、名前と値のペアの引数 FileEncoding を使用して、ファイルに関連付けられた文字エンコードを指定してください。

参考

| | | |