1

次のことを行う C# コードがあります。

 DateTime now = DateTime.UtcNow;
 string timeToOutput = now.ToString();
 String pathInStorage = now.ToString("yyyy-MM-dd/HH/");

 CloudBlobClient client = getClient();
 CloudBlobContainer container = client.GetContainerReference(hardcodedContainerName);
 container.GetBlobReference(pathInStorage).UploadText(timeToOutput);

ご覧のとおり、最初に現在の時刻を取得してから、異なる書式文字列を使用して 2 回書式設定します。ほとんどの場合、ストレージ内のパスは、BLOB 自体への時間出力と一致します。

ただし、(ごくまれに) ブロブ内の時刻が 2012 年 (2012 年 10 月 29 日 12:33:00 など) になることもありますが、パスには 2555 年が含まれ、時-日-月はブロブ内の時刻と一致します ( 2555-10-29-12 など)。

これはどのように起こりますか?

4

2 に答える 2

6

2555 年は、タイの太陽暦では 2012 年です。なぜこれが表示されるのかわかりません。おそらく、コードを実行しているサーバーがタイ語のロケールを持っているのでしょうか?

期待どおりにコードを実行するには、別のロケール対応バージョンの ToString() を使用します。DateTime.ToString()を参照してください。

于 2012-10-29T09:19:49.890 に答える
0

インバリアント カルチャーを介してそれを行うことはできますか?

何かのようなもの:

DateTime now = DateTime.UtcNow;
string timeToOutput = now.ToString();
CultureInfo InvC = new CultureInfo("");
String pathInStorage = now.ToString("yyyy-MM-dd/HH/", InvC);
//rest of your logic
于 2012-10-29T11:04:15.530 に答える