を使用して文字列を解析しようとしてDateTimeOffset.TryParse
います。Windowsでは成功しますが、Linuxでは失敗します。
DateTimeOffset.TryParse("29.10.2020", out var parsedDate);
私もそれを使用して解析しようとしました
DateTimeOffset.TryParseExact("29.10.2020", "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate)
ただし、返されるブール値はでfalse
あり、デフォルト値0001-01-01T00:00:00.0000000+00:00
はに割り当てられていparsedDate
ます。
Linuxでこれを行う方法はありますか?
このオーバーロードTryParse
は現在のカルチャ(CultureInfo.CurrentCulture
)を使用するため、カルチャは開発マシン(Windows)とLinuxマシンで異なります。例えば:
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en");
DateTimeOffset parsedDate;
bool res = DateTimeOffset.TryParse("29.10.2020", out parsedDate);
Console.WriteLine(res); // false
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("ru");
res = DateTimeOffset.TryParse("29.10.2020", out parsedDate);
Console.WriteLine(res); // true
したがってIFormatProvider
、日付を格納する形式に適したプロバイダーを受け入れて渡すオーバーロードを使用する必要があります。例えば:
var cultureOfMyDates = CultureInfo.GetCultureInfo("ru");
res = DateTimeOffset.TryParse("29.10.2020", cultureOfMyDates, DateTimeStyles.None, out parsedDate);
または使用しますTryParseExact
(サンプルDateTimeOffset.TryParseExact("29.10.2020", "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate)
は私にとっては問題なく動作します)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加