修改系统默认区域语言日期格式
????? 最近一個(gè)EF+WCF的項(xiàng)目中需要使用Expression傳遞查詢條件,有的條件中會(huì)包含對(duì)DateTime類型的參數(shù)進(jìn)行判斷。
????? 例如最常見(jiàn)的 order=>order.OrderDate > DateTime.Now;
????? 這種用法在正常情況下是沒(méi)有問(wèn)題的,但是如果客戶端和服務(wù)器端的語(yǔ)言區(qū)域不一樣,就會(huì)造成通過(guò)WCF傳遞過(guò)后,DateTime類型的變量無(wú)法識(shí)別。
????? 例如一般中文簡(jiǎn)體的默認(rèn)日期格式為yyyy-MM-dd,中文繁體的格式為:yyyy/MM/dd,這樣的話,當(dāng)客戶端與服務(wù)器端區(qū)域語(yǔ)言不同的時(shí)候,傳參就會(huì)報(bào)錯(cuò)。
????? 網(wǎng)上找了解決方法,客戶端直接修改系統(tǒng)的默認(rèn)語(yǔ)言格式就好,可以確定保持和服務(wù)器統(tǒng)一。
?????
???? 代碼如下,一般在程序啟動(dòng)的時(shí)候就設(shè)定就沒(méi)問(wèn)題了。
1 public class LocalLanguage 2 { 3 [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")] 4 public static extern int GetSystemDefaultLCID(); 5 [DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")] 6 public static extern int SetLocaleInfo(int Locale, int LCType, string lpLCData); 7 public const int LOCALE_SLONGDATE = 0x20; 8 public const int LOCALE_SSHORTDATE = 0x1F; 9 public const int LOCALE_STIME = 0x1003; 10 11 public static void SetDateTimeFormat() 12 { 13 try 14 { 15 int x = GetSystemDefaultLCID(); 16 SetLocaleInfo(x, LOCALE_STIME, "HH:mm:ss"); //時(shí)間格式 17 SetLocaleInfo(x, LOCALE_SSHORTDATE, "yyyy-MM-dd"); //短日期格式 18 SetLocaleInfo(x, LOCALE_SLONGDATE, "yyyy-MM-dd"); //長(zhǎng)日期格式 19 } 20 catch (Exception ex) 21 { 22 Console.WriteLine(ex); 23 } 24 } 25 }?
轉(zhuǎn)載于:https://www.cnblogs.com/Miraclky-G/archive/2013/04/12/3016147.html
總結(jié)
以上是生活随笔為你收集整理的修改系统默认区域语言日期格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 长城汽车推新品牌 将在2022年上市
- 下一篇: chapter1:The way of