Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#检查并更改excel工作表中从英国到美国的日期时间格式?_C# - Fatal编程技术网

如何使用C#检查并更改excel工作表中从英国到美国的日期时间格式?

如何使用C#检查并更改excel工作表中从英国到美国的日期时间格式?,c#,C#,我有.Net代码,它在GridView中检索一组数据/记录并将其呈现给用户。有两列包含日期。当我将这些数据导出到excel中,并将用户的区域设置设置为UK时,列的日期时间格式保持良好。但是,当它被导出到具有美国地区设置的计算机时,excel格式的列会发生变化,“DD”中超过12的任何内容都会在excel列中左对齐,因为对于美国设置来说是月份。简而言之,我想先检查,然后根据每个用户的区域设置更改格式。我一直在为文化挠头,但没有结果。谢谢你在这方面的帮助?以下是我想做的: enter code he

我有.Net代码,它在GridView中检索一组数据/记录并将其呈现给用户。有两列包含日期。当我将这些数据导出到excel中,并将用户的区域设置设置为UK时,列的日期时间格式保持良好。但是,当它被导出到具有美国地区设置的计算机时,excel格式的列会发生变化,“DD”中超过12的任何内容都会在excel列中左对齐,因为对于美国设置来说是月份。简而言之,我想先检查,然后根据每个用户的区域设置更改格式。我一直在为文化挠头,但没有结果。谢谢你在这方面的帮助?以下是我想做的:

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。如何进行?谢谢!