【问题标题】:converting error with using Convert.ToDateTime in asp.net C# [duplicate]在asp.net C#中使用Convert.ToDateTime转换错误[重复]
【发布时间】:2020-09-19 08:43:08
【问题描述】:

在此之前,代码工作正常,而程序无法识别日期格式可能是因为文化信息不同。 我正在使用 Convert.ToDateTime 方法来转换 DateTime 格式。

Input.TestDate = Convert.ToDateTime(gvwTest.Rows[i].Cells["TxnDate"].Value).ToString("yyyy-MM-dd HH:mm:ss");

结果,它转换了,但 MM 和 dd 不正确。

“1/6/2020”“2020-01-06 00:00:00”

string test1 = gvwTest.Rows[i].Cells["TxnDate"].Value.ToString();
string test2 = gvwTest.Rows[i].Cells["TxnDate"].Value.GetType().ToString();

test1 = "1/6/2020";
test2 = "System.String";

【问题讨论】:

  • 避免Convert.ToDateTime。相反,您应该始终更喜欢DateTime.ParseExactDateTime.TryParseExact。 Microsoft 需要从 .NET 中完全删除 Convert 类,imo。
  • @Dai 我不知道微软会删除 Convert,但感谢您的信息。项目合作多方,我只是想让它更加规范。

标签: c# asp.net datetime


【解决方案1】:

您可以使用DateTime.ParseExact

CultureInfo provider = CultureInfo.InvariantCulture;
var date = DateTime.ParseExact("1/6/2020", "M/d/yyyy", provider);
var dateString = date.ToString("yyyy-MM-dd HH:mm:ss");

输出 - 2020-01-06 00:00:00

在我的示例中,我使用 2020 年 1 月 6 日作为输入。

【讨论】:

  • 我发现DateTime.TryParseExact 更适合解决我的问题,但是,我会接受这个答案,因为它给了我一些线索。非常感谢
【解决方案2】:

虽然正如其他人已经指出的那样,DateTime.TryParseExact 绝对是更好的选择,但Convert.ToDateTime 仍然提供了一个可以接受文化信息的过载,以防你想试一试。

这样的……

Input.TestDate = Convert.ToDateTime(gvwTest.Rows[i].Cells["TxnDate"].Value, CultureInfo.InvariantCulture).ToString("yyyy-MM-dd HH:mm:ss");

或者……

Input.TestDate = Convert.ToDateTime(gvwTest.Rows[i].Cells["TxnDate"].Value, CultureInfo.CurrentCulture).ToString("yyyy-MM-dd HH:mm:ss");

【讨论】:

    猜你喜欢
    • 2022-12-28
    • 2014-04-06
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多