簡體   English   中英

在C#中將日期字符串和時間字符串轉換為datetime

[英]Conversion of date string and time string into datetime in c#

我們有一個包含3個字段的數據表Date(string type)(MM / dd / YYYY)Hours(string type)(24 hours format)和minutes(string Type)我需要創建另一列日期時間基於以上3列,並需要按該日期時間列對數據表進行排序

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

我試圖創建一個像這樣的字符串Date +" "+Hours+":"+ Minutes並轉換為datetime。 但是我遇到一個錯誤

“字符串未被識別為有效的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)

為什么首先將所有內容存儲為字符串? 但是,您可以使用DateTime.TryParseExact構建完整的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將所有信息存儲在一個對象中。 表中的三列是多余的。

使用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();
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM