我想使用特定區域性(en-US)執行msbuild腳本,因爲其中一項任務是嘗試使用aDateTime.ToShortDateString()作爲參數調用Web服務,而我的當前的文化與服務器的(英文)格式不兼容。強制執行控制檯命令的文化
如何在不改變區域設置的情況下做到這一點?
我想使用特定區域性(en-US)執行msbuild腳本,因爲其中一項任務是嘗試使用aDateTime.ToShortDateString()作爲參數調用Web服務,而我的當前的文化與服務器的(英文)格式不兼容。強制執行控制檯命令的文化
如何在不改變區域設置的情況下做到這一點?
我結束了創建爲改變當前文化這樣一個特殊的任務:
public class ChangeCulture : Task
{
[Required]
public string Culture { get; set; }
public override bool Execute()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(Culture);
return true;
}
}
如果你想改變你的整個應用程序的文化,那麼你可以設置區域性應用程序啓動時是這樣的:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
你可以閱讀設置它在MSDN。
儘管你的例子,這可能是矯枉過正。如果您試圖僅將ToShortDateString()更改爲en-US,則可能有更簡單的方法。您可以使用toString()方法,並通過特定的格式,例如,你可以這樣做:
aDateTime.ToString("MM/dd/yyyy");
更具體地說,您可以使用像這樣與System.Globalization預先定義的文化信息:
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
string datePattern = culture.DateTimeFormat.ShortDatePattern;
string shortDate = aDateTime.ToString(datePattern);
「我的」應用程序的MSBuild,所以我不能改變它;) – 2010-01-04 16:23:39