【问题标题】:Error while converting string to datetime in c#在c#中将字符串转换为日期时间时出错
【发布时间】:2020-10-13 17:06:55
【问题描述】:

我有一个 DateTime,我正在尝试将其转换为字符串,然后将其转换回 DateTime 以对其进行格式化。 但我不断收到“字符串未被识别为有效的日期时间字符串”。 有什么想法吗?

var data = list_2.Entries.Select(c => new clients { code = cli_code, last_backup = c.Name, last_backup_date = c.AsFile.ClientModified.ToLocalTime() }).LastOrDefault(); 
var last_backup_date = data.last_backup_date;
var last_backup_date_string = Convert.ToString(last_backup_date);
var last_backup_date_formatted = DateTime.ParseExact(last_backup_date_string, "dd/MM/yyyy HH:MM:ss", CultureInfo.InvariantCulture);
var today_date = DateTime.Today;

【问题讨论】:

  • 你能添加last_backup_date_string的值吗?
  • 是的,当然,一分钟
  • 如果你愿意,我可以把输出从data.last_backup_date 放出来
  • 我们需要看一个 last_backup_date 的例子
  • var last_backup_date = data.last_backup_date; 的实际数据类型是什么,因为您需要使用此行将其转换为字符串 Convert.ToString(last_backup_date);

标签: c# wpf


【解决方案1】:

既然你已经有一个DateTime,你可以格式化它:

string s = last_backup_date.ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);

无需先将其转换为string,然后再尝试将其转换回DateTime。顺便说一下,DateTime 对象本身没有特定的格式。

【讨论】:

  • 是的,但这将我的日期时间保留为字符串,因此我无法在我的数据网格上订购它
  • 什么意思?将它转换为字符串和从字符串转换回来有何不同?
  • @MatthewAlmeida - 你需要在 winforms 中的 datagridcolumn 上应用 datetime 对象的格式,例如。 stackoverflow.com/questions/4033113/…
  • 您可以在DataGrid 中格式化它,前提是您需要这样做。
  • @mm8 直截了当,打败我。很好的答案。
【解决方案2】:

你可以试试这个吗?

Var last_backup_date_string = last_backup_date.ToString("dd/MM/yyyy HH:MM:ss", CultureInfo.InvariantCulture)

【讨论】:

  • 字符串格式化,但日期时间不变
  • @MatthewAlmeida:DateTime 对象没有特定格式...
【解决方案3】:

根据您掌握的信息,转换应该不是问题。但是,问题区域可能在您的ParseExact 中。您当前的日期格式以月份而不是日期开头。您应该能够以您喜欢的方式显示格式。

Console.WriteLine($"{date.ToString("dd/MM/yyyy")}");
Console.WriteLine($"{date.ToString("MMMM dd, yyyy")}");
Console.WriteLine($"{date.ToString("MM-dd-yyyy")}");

否则,您可以使用DateTime.Parse 方法或DateTime.TryParse,这样您就不必指定文化差异。

例子:

DateTime date;
var current = DateTime.Now.ToString();
if(DateTime.TryParse(current, out date))
     Console.WriteLine(date);

DateTime date;
var current = "6/22/2020 10:03:40 AM";
if(DateTime.TryParse(current, out date))
     Console.WriteLine($"{date:dd/MM/yyyy}");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多