将日期反转为DD / MM / YYYY

时间:2016-08-26 19:17:42

标签: 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 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;
                    }

3 个答案:

答案 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并将其转换为字符串,以便将其转换回日期时间,这是不必要的,除非dtinidtfim(这些是什么做的)代表?)是某种奇怪的用户输入对象。

答案 1 :(得分:0)

更改日期日期时间格式,将小时加倍hh

MM-dd-yyyy hh:mm tt

dd-MM-yyyy hh:mm tt

答案 2 :(得分:0)

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