在 c# 中将日期字符串和时间字符串转换为日期时间



我们有一个包含 3 个字段的数据表 日期(字符串类型)(MM/dd/YYYY) 小时(字符串类型)(24 小时格式)和分钟(字符串类型) 我需要根据上述 3 列创建另一列日期时间列,并且需要按该日期时间列
对数据表进行排序

Date        Hours   Minutes
5/19/2015   12      30
11/18/2015  23      45

我尝试Date +" "+Hours+":"+ Minutes创建这样的字符串并转换为日期时间。但是我收到错误

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

请问这个问题可以帮助我

为什么一开始就将所有内容存储为字符串?但是,您可以使用 DateTime.TryParseExact 生成完整的日期时间。然后,您可以使用Linq-To-DataTable进行排序。最后创建排序表,CopyToDataTable

table.Columns.Add("DateColumn", typeof(DateTime));
foreach (DataRow row in table.Rows)
{
    string dateTimeString = String.Format("{0} {1}:{2}",
        row.Field<string>("Date"),
        row.Field<string>("Hours"),
        row.Field<string>("Minutes"));
    DateTime date;
    if(DateTime.TryParseExact(dateTimeString, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out date));
    {
        row.SetField("DateColumn", date);
    }
}
table = table.AsEnumerable()
    .OrderBy(row => row.Field<DateTime>("DateColumn"))
    .CopyToDataTable();

因此,您无需分别存储小时和分钟,DateTime将所有信息存储在一个对象中。表中的三列是多余的。

您需要迭代 DataTable 并将 DateTime.ParseExact 与显式格式字符串一起使用,如下所示:

DataTable dt;
foreach (var row in dt.Rows) 
    row["DateTime"]=DateTime.ParseExact(row.Date +" "+row.Hours+":"+ row.Minutes,"MM/dd/yyyy HH:mm",null)

使用ParseExact方法。我发现它非常简单

  table.Columns.Add("MixedData",typeof(DateTime));
    foreach (DataRow row in table.Rows)
    {
                    DateTime date = DateTime.ParseExact(row["Dates"].ToString() + " " + row["Hours"] + ":" + row["Minutes"], "M/dd/yyyy H:mm", CultureInfo.InvariantCulture);
                    row["MixedData"] = date;
                    table.AcceptChanges();
   }

相关内容

  • 没有找到相关文章

最新更新