如何使用C#检查并更改excel工作表中从英国到美国的日期时间格式?
我有.Net代码,它在GridView中检索一组数据/记录并将其呈现给用户。有两列包含日期。当我将这些数据导出到excel中,并将用户的区域设置设置为UK时,列的日期时间格式保持良好。但是,当它被导出到具有美国地区设置的计算机时,excel格式的列会发生变化,“DD”中超过12的任何内容都会在excel列中左对齐,因为对于美国设置来说是月份。简而言之,我想先检查,然后根据每个用户的区域设置更改格式。我一直在为文化挠头,但没有结果。谢谢你在这方面的帮助?以下是我想做的:如何使用C#检查并更改excel工作表中从英国到美国的日期时间格式?,c#,C#,我有.Net代码,它在GridView中检索一组数据/记录并将其呈现给用户。有两列包含日期。当我将这些数据导出到excel中,并将用户的区域设置设置为UK时,列的日期时间格式保持良好。但是,当它被导出到具有美国地区设置的计算机时,excel格式的列会发生变化,“DD”中超过12的任何内容都会在excel列中左对齐,因为对于美国设置来说是月份。简而言之,我想先检查,然后根据每个用户的区域设置更改格式。我一直在为文化挠头,但没有结果。谢谢你在这方面的帮助?以下是我想做的: enter code he
enter code here
受保护的void gvReportHidden_OnRowDataBound(对象发送方,GridViewRowEventArgs e)
{
CultureInfo currentCulture=CultureInfo.currentCulture
if (currentCulture.NativeName.Equals("en-UK"))
{
e.Row.Cells[8].Text = DateTime.Parse(e.Row.Cells[8].Text).ToString("dd/MM/yyyy");
e.Row.Cells[9].Text = DateTime.Parse(e.Row.Cells[9].Text).ToString("dd/MM/yyyy");
}
else
{
e.Row.Cells[8].Text = DateTime.Parse(e.Row.Cells[8].Text).ToString("MM/dd/yyyy");
e.Row.Cells[9].Text = DateTime.Parse(e.Row.Cells[9].Text).ToString("MM/dd/yyyy");
}
}
输出DateTime变量时,可能需要明确设置区域性。以下是MSDN中的一个示例:
using System;
using System.Globalization;
using System.Threading;
public class TestClass
{
public static void Main()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
DateTime dt = DateTime.Now;
Console.WriteLine("Today is {0}", DateTime.Now.ToString("d"));
// Increments dt by one day.
dt = dt.AddDays(1);
Console.WriteLine("Tomorrow is {0}", dt.ToString("d"));
}
}
//If you execute this code on August 3, 2001, it displays the following output:
Today is 8/3/2001
Tomorrow is 8/4/2001
快速的谷歌搜索会显示可用的文化列表:
列表很长,所以我没有发布它,但是你应该能够很容易地找到英国文化代码请分享你的代码,这样我们就可以看到你尝试了什么,而不是猜测感谢这个快速回复。然而,我试图做的是,将gridview中指定列的属性设置为来自英国的美国格式cords来自数据库,直接以“DD/MM/YYYY”格式显示记录。我想处理这个问题,并以US格式显示DateTime。谢谢!如果您有一个带有值的DateTime对象,那么您可以将其转换为您想要的任何格式,使用en-US区域性字符串,还可以添加任何其他格式need@PseuduNym01:Thanks在此寻求帮助。我在else部分中收到一个错误,指出“字符串未被识别为有效的DateTime”:-System.FormatException,同时尝试将对象解析为US DateTime(本地设置与US相同)。是否可以将DateTime解析为US。如何进行?谢谢!