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);

如您所见,我首先获取当前时间,然后使用不同的格式字符串对其进行两次格式化。现在大多数情况下,存储中的路径将匹配到 blob 本身的时间输出。

然而,有时(非常罕见)blob 中的时间将是 2012 年(如 2012 年 10 月 29 日 12:33:00),但路径将包含 2555 年,并且小时-日-月将与 blob 内的时间相匹配(如 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 回答