gpt4 book ai didi

c# - 文化日期时间变化

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:12 25 4
gpt4 key购买 nike

我有一个执行邮件合并和其他操作的 VSTO 应用程序。

邮件合并数据库是一个 Excel 数据库,具有一些存储为 (dd/MM/YYYY) 的 DateTime 字段(例如 29/04/2012)。我的问题是在 Excel 中日期看起来不错,但在 Word 中它以其他格式显示 (MM/dd/yyyy)(例如 4/29/2012)。当尝试在我的 VSTO 应用程序上获取此日期时,它抛出一个转换错误,指示字符串格式错误。

所有这些都发生在同一台机器上。如果我将 VSTO 中的文化信息更改为 en-US,则效果很好。

// This way fails 
edictoActual.FechaEdicto = Convert.ToDateTime(fields(fieldFechaEdicto).value);

// This way Works
IFormatProvider Formato = new System.Globalization.CultureInfo("en-US", true);
edictoActual.FechaEdicto = Convert.ToDateTime(fields(fieldFechaEdicto).value,Formato);

为什么会这样?

最佳答案

string DateString = "29/04/2012"; //DateString needs to be replaced with your fields value as a string
var dateLength = DateString.Length;
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime dateVal;
switch (dateLength)
{
case 8:
{
dateVal = DateTime.ParseExact(DateString, "M/d/yyyy", culture);
break;
}
case 9:
{
// he you can add your own additional if(){} condition to check if date value Day has a length of 2
// if so then you know that the date is in m/dd/yyyy format
// otherwise you know it's in mm/d/yyyy but
dateVal = DateTime.ParseExact(DateString, "M/dd/yyyy", culture);
break;
}
case 10:
{
dateVal = DateTime.ParseExact(DateString, "MM/dd/yyyy", culture);
//or change the above to look like the following
//dateVal = DateTime.ParseExact(DateString, "dd/MM/yyyy", culture);
break;
}

}

关于c# - 文化日期时间变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com