修改系统默认区域语言日期格式

      最近一个EF+WCF的项目中需要使用Expression传递查询条件,有的条件中会包含对DateTime类型的参数进行判断。

      例如最常见的 order=>order.OrderDate > DateTime.Now;

      这种用法在正常情况下是没有问题的,但是如果客户端和服务器端的语言区域不一样,就会造成通过WCF传递过后,DateTime类型的变量无法识别。

      例如一般中文简体的默认日期格式为yyyy-MM-dd,中文繁体的格式为:yyyy/MM/dd,这样的话,当客户端与服务器端区域语言不同的时候,传参就会报错。

      网上找了解决方法,客户端直接修改系统的默认语言格式就好,可以确定保持和服务器统一。

     

     代码如下,一般在程序启动的时候就设定就没问题了。

 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");        //时间格式  
17                 SetLocaleInfo(x, LOCALE_SSHORTDATE, "yyyy-MM-dd");   //短日期格式    
18                 SetLocaleInfo(x, LOCALE_SLONGDATE, "yyyy-MM-dd");   //长日期格式   
19             }
20             catch (Exception ex)
21             {
22                 Console.WriteLine(ex);
23             }
24         }  
25     }

 

转载于:https://www.cnblogs.com/Miraclky-G/archive/2013/04/12/3016147.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值