[英]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.