Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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# 将日期反转为DD/MM/YYYY_C#_Datetime - Fatal编程技术网

C# 将日期反转为DD/MM/YYYY

C# 将日期反转为DD/MM/YYYY,c#,datetime,C#,Datetime,我有一个具有多种语言的应用程序,葡萄牙语和西班牙语使用DD/MM/YYYY,而英语则需要使用MM/DD/YYYY。我在用这个 if (Culture == "English (United States)") { var dataInicial = DateTime.ParseExact(dtini.ToString(), "MM-dd-yyyy h:mm tt", null); var dataFinal = DateTime.ParseExact(dtfim.ToString

我有一个具有多种语言的应用程序,葡萄牙语和西班牙语使用
DD/MM/YYYY
,而英语则需要使用
MM/DD/YYYY
。我在用这个

if (Culture == "English (United States)")
{
    var dataInicial = DateTime.ParseExact(dtini.ToString(), "MM-dd-yyyy h:mm tt", null);
    var dataFinal = DateTime.ParseExact(dtfim.ToString(), "dd-MM-yyyy h:mm tt", null);
}
但它不起作用,它是给予

“字符串未被识别为有效的日期时间。”

我尝试了“MM dd yyyy h:MM tt”和“dd MM yyyy h:MM tt”,但得到了相同的错误


第一个问题完成了,现在我有一个反转问题,字符串转换为日期时间。在grdCount.Cells[2]中。文本我有“15/12/2015”我想转换为12/15/2015,但我得到的是“字符串未被识别为有效的日期时间”


更改日期时间格式,使小时为两位数
hh

MM-dd-yyyy hh:mm tt


我相信您正在寻找的是“通用”日期时间格式说明符(“g”和/或“g”)

这将为您完成繁重的工作,并根据用户机器的文化输出“通用”(顾名思义)日期格式。以下是从第页复制的结果:

您可以在对DateTime.ToString()的调用中使用此格式,并获取一个文化上合适的字符串进行解析


顺便说一下,根据你的例子,你可以考虑完全放弃这个字符串转换。看起来你所做的只是把一个日期时间转换成一个字符串,这样你就可以把它转换回日期时间,这是没有必要的,除非
dtini
dtfim
(它们代表什么?)是某种奇怪的用户输入对象。

正如@Aybe建议的那样,尝试用不变的区域性来处理日期。或者强制您正在使用的UI元素使用当前区域性格式:。

也许您应该在代码中使用不变区域性处理所有日期,然后使用特定区域性显示它们(这将简化您的过程)。
区域性的值是什么,
dtini
和您的
CurrentCulture
到底是什么?看起来您的目的几乎是获取现有的日期值并更改其外观。如果是这种情况,您将不使用
DateTime.ParseExact
,而是使用自定义格式显示它,例如
dtini.ToString(“dd-MM-yyyy”)
(这假设
dtini
dtfim
已经是
DateTime
变量)那么“MM-dd-yyyyyy hh:MM-tt”和“dd-MM-yyyyyyy hh:MM-tt”呢?你试过了吗?@ViniciusCano你的
dtini
似乎已经是
Datetime
,这就是为什么你甚至不需要解析任何东西。回答得好,教会了我一些新东西。缺点可能是在美国机器上会说西班牙语,所以我可以看到处理应用程序逻辑的好处,但肯定是一个很酷的技巧。谢谢。始终最好让框架完成工作,对吗也就是说,当前机器的区域性设置独立于地理位置。因此,西班牙用户最有可能使用西班牙语的windows(例如),因此他们将获得“西班牙语”日期和时间格式。如果他们使用的是en-us文化,它将显示美国英语格式。
MM-dd-yyyy hh:mm tt
dd-MM-yyyy hh:mm tt
string formatted = myDateTime.ToString("g");
2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM (en-US)
2009-06-15T13:45:30 -> 15/06/2009 13:45:30 (es-ES)
2009-06-15T13:45:30 -> 2009/6/15 13:45:30 (zh-CN)