C# 日期格式和区域设置

发布于 2024-11-09 01:22:28 字数 689 浏览 2 评论 0原文

英国设置:1/7/2011(2011 年 7 月 1 日)。在 Excel 中格式化时,我使用“MMM-yy”,预期:Jul-11,但它给了我“Jan-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);
        }

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

UK settings: 1/7/2011 (July 1, 2011). When formatted in Excel, I use "MMM-yy", expected: Jul-11, but it gives me "Jan-11"

My code:

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);
        }

I am confused. Anyone knows how to solve this
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小兔几 2024-11-16 01:22:28

当您想要 dd/mm/yyyy 时,您使用的区域性似乎具有 mm/dd/yyyy 的日期格式。因此,您的转换使用 1/7/2011 中的 1 作为月份,而不是 7

将区域性更改为 dd/mm/yyyy 格式的区域性应该可以解决您的问题。

编辑

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

It looks like the culture you are using has a date format of mm/dd/yyyy when you want dd/mm/yyyy. Thus, your conversion is using 1 from 1/7/2011 as the month instead of the 7.

Changing the culture to one which has a format of dd/mm/yyyy should fix your problem.

EDIT

As I suspected, LCID 1033 (0x0409) is en-US, not en-GB. en-GB is 2057 (0x0809). You should use the locale name to avoid this problem in the future, vis: new CultureInfo("en-GB");

獨角戲 2024-11-16 01:22:28

这显然不是英国设置 - 日期 1/7/2011 在美国日期格式中将显示为 2011 年 1 月

It's clearly not UK settings - the date 1/7/2011 would show up as Jan 2011 in US date format

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文