|
■No86566 (大阪 さん) に返信 > 掲示板でのやりとりでは"2018/2/10 9:52:49"の方が
せめて "2018/02/10 09:52:49" ならばスルーしていたのですが。(^^;
> 日時書式指定文字列でエスケープ文字の使用例を初めて見ました。 > \なしでも結果に影響はないようですが
「/」はカルチャの影響を受けて、他の文字に書き変わるからです。
OS の地域設定に頼らず、アプリケーション側で CultureInfo を明示すれば 結果的にエスケープが不要になる可能性はありますけれどね。
実験として、コントロールパネルの地域設定で、日付の短い形式を "yyyy/MM/dd" から "yyyy-MM-dd" に変更してみてください。
たとえば下記の場合 s1 = "2018-02-15" s2 = "2018/02/15" という違いが生じることになります。
'VB.NET s1 = DateTime.Today.ToString("yyyy/MM/dd") s2 = DateTime.Today.ToString("yyyy\/MM\/dd")
'VBA s1 = Format(Now, "YYYY/MM/dd") s2 = Format(Now, "YYYY\/MM\/dd")
>> 今回は日付でしたが、数値においても同様のカルチャ依存の問題がありますので、 >> 文字列解析を行う場合にはご注意ください。 > 非英語圏での小数点が「.」ではなく「,」であるといった事でしょうか?
小数点記号もその一つです。 他には、通貨記号、負数表現、桁区切りの位置と記号、既定の小数桁数あたり。
Dim dec As Decimal = -12345678.901D
s = dec.ToString("C", New CultureInfo("ja-JP")) '「-\1,234,568」日本 s = dec.ToString("C", New CultureInfo("en-US")) '「($1,234,567.89)」米国 s = dec.ToString("C", New CultureInfo("en-GB")) '「-£1,234,567.89」英国 / 実際の£は半角
s = dec.ToString("N", New CultureInfo("ar-EG")) '「12,345,678.901-」アラビア語 (エジプト) s = dec.ToString("N", New CultureInfo("de-CH")) '「-12'345'678.90」ドイツ語 (スイス) s = dec.ToString("N", New CultureInfo("en-IN")) '「-1,23,45,678.90」英語 (インド) s = dec.ToString("N", New CultureInfo("es-ES")) '「-12.345.678,90」スペイン語 (スペイン) s = dec.ToString("N", New CultureInfo("es-US")) '「-12345,678.90」スペイン語 (米国)
|