此代码似乎将当前日期时间格式化为中文长格式:
var result = DateTime.Parse(Convert.ToString(DateTime.Now, new CultureInfo("zh-tw"))).ToLongDateString();
此代码似乎执行相同的操作,但通过修改当前线程区域性来实现:
Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-tw");
DateTime dtCreateAt = DateTime.Now;
var result = DateTime.TryParse(Convert.ToString(dateTime.Date), out dtCreateAt).ToLongDateString();
这些片段实际上是一样的吗? 是否应该出于任何原因使用一个而不是另一个?
为什么这个特定的日期被格式化为 zh-tw? 是因为您正在向台湾用户提供数据吗? 或者因为您正在编写一个文件,该文件被发送到台湾的服务器,在其输入中假设台湾格式的日期?
在前一种情况下,更改程序范围的设置并影响向用户显示的所有内容是有意义的。
在后一种情况下,区域性更改应限制为最小的块(仅一个函数调用(,并且不更改线程区域性设置。
仅当您打算影响应用程序执行的所有格式设置时(至少在用户访问设置并选择其他首选项之前(,才分配给CurrentThread.CurrentCulture
。