C#日期格式和区域设置

时间:2011-05-23 16:21:28

标签: c# excel date-format regional-settings

英国设置:2011年7月1日(2011年7月1日)。在Excel格式化时,我使用“MMM-yy”,预计:7月11日,但它给了我“1月11日”

我的代码:

newDataRange.SetValue("Value2", arr);  //arr = "01/07/2011 00:00:00.000"
newDataRange.SetValue("NumberFormat", "MMM-yy");

        public static void SetValue(this Range range, string propertyName, object value)
        {
            var excelCulture = new CultureInfo(1033);
            var args = new object[1];
            args[0] = value;
            range.GetType().InvokeMember(propertyName, 
                BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance, null, range, args, excelCulture);
        }

我很困惑。任何人都知道如何解决这个问题 谢谢

2 个答案:

答案 0 :(得分:2)

当您想要dd / mm / yyyy时,您使用的文化看起来像日期格式为mm / dd / yyyy。因此,您的转化使用1中的1/7/2011作为月份,而不是7

将文化更改为格式为dd / mm / yyyy的文化可以解决您的问题。

修改

我怀疑,LCID 1033(0x0409)是en-US,而不是en-GB。 en-GB是2057(0x0809)。您应该使用区域设置名称以避免将来出现此问题:new CultureInfo("en-GB");

答案 1 :(得分:1)

显然不是英国设置 - 2011年1月7日以美国日期格式显示的日期