我的应用程序有多种语言,葡萄牙语和西班牙语使用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);
}
但它不起作用,它正在给予
“字符串未被识别为有效的DateTime。”
我试过“MM-dd-yyyy h:mm tt”和“dd-MM-yyyy h:mm tt”,但得到了同样的错误。
它完成的第一个问题,现在我有一个反转问题,字符串到datetime.Inside grdCount.Cells [2] .Text我有“15/12/2015”我想转换为12/15/2015 ,但我得到“字符串不被认为是有效的日期时间”
if (Culture== "English (United States)")
{
DateTime data = Convert.ToDateTime(grdCount.Cells[2].Text);
var dataInicial = data.ToString("mm-DD-yyyy");
_simulacao.Notas.Rows[u]["DTEMISSAO"] = grdCount.Cells[2].Text;
_simulacao.Notas.Rows[u]["DTVENCIMENTO"] = grdCount.Cells[3].Text;
}
答案 0 :(得分:2)
我相信你所寻找的是"将军" DateTime格式说明符(" g"和/或" G")。
string formatted = myDateTime.ToString("g");
这将为你做繁重的工作并输出" general" (因为它被称为)基于用户机器文化的日期格式。以下是从this页面复制的结果:
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)
您可以在调用DateTime.ToString()时使用此格式,并获取一个文化上合适的字符串进行解析。
顺便说一下,根据你的例子,你可以考虑完全放弃这个字符串转换。看起来您正在做的就是使用DateTime并将其转换为字符串,以便将其转换回日期时间,这是不必要的,除非dtini
和dtfim
(这些是什么做的)代表?)是某种奇怪的用户输入对象。
答案 1 :(得分:0)
更改日期日期时间格式,将小时加倍hh
MM-dd-yyyy hh:mm tt
和
dd-MM-yyyy hh:mm tt
答案 2 :(得分:0)
正如@Aybe建议的那样,尝试用不变的文化处理日期。或者强制您使用的UI元素使用当前的区域性格式:CultureInfo.DateaTimeFormat。