我有一個包含四列和n行的數據表。在第一列中,我只有代表日期時間的整數(Int64)。在其他三列中,我有字符串。將Int64類型的數據表列中的所有值更改爲在C#中鍵入Datetime
我只想將第一列中的整數值更改爲以下格式的日期時間(yyyy-MM-ddTHH:mm:ss.fffffff)。
我附加了我試圖做的事情。但是我收到了一個異常,無法將Int64轉換爲DateTime。
所以這就是我需要: 1.如何循環通過第一列。 2.如何更改/從Int64的第一列轉換的每個條目爲DateTime
我有一個包含四列和n行的數據表。在第一列中,我只有代表日期時間的整數(Int64)。在其他三列中,我有字符串。將Int64類型的數據表列中的所有值更改爲在C#中鍵入Datetime
我只想將第一列中的整數值更改爲以下格式的日期時間(yyyy-MM-ddTHH:mm:ss.fffffff)。
我附加了我試圖做的事情。但是我收到了一個異常,無法將Int64轉換爲DateTime。
所以這就是我需要: 1.如何循環通過第一列。 2.如何更改/從Int64的第一列轉換的每個條目爲DateTime
環DataTable.Rows
獲取Rows[i][0]
設爲new DateTime(long.Parse("Your integer"))
你的Int64列商店,你可以簡單的將其轉換爲DateTime
類型使用DateTime dateTime = new DateTime(ticks);
蜱,因此使用foreach
循環,你可以這樣做
DataTable table = GetTable(); // Get the data table.
foreach (DataRow row in table.Rows) // Loop over the rows.
{
var dt = new DateTime(long.Parse(row["ColumnName"].ToString())); // parse to datetime
}
蜱轉換爲DateTime這樣的:
foreach (DataRow row in table.Rows) //table is your DataTable variable.
{
DateTime dateTime = new DateTime(long.Parse(row["Date"].ToString()));
row["Date"] = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
}
但是,如果您的「Date」列的類型爲long,那麼您將無法在其中插入DateTime或字符串類型。
或者,你也可以使用列的索引,而不是列名,像這樣(蜱假設列的索引爲0):
foreach (DataRow row in table.Rows)
{
DateTime dateTime = new DateTime(long.Parse(row[0].ToString()));
row[0] = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
}
...那個問題是......? – Nino
試試這個
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("OldDate", typeof(long));
dt.Columns.Add("ColA", typeof(string));
dt.Columns.Add("ColB", typeof(string));
dt.Columns.Add("ColC", typeof(string));
dt.Rows.Add(new object[] { 636038375869883449, "b", "b", "b" });
dt.Rows.Add(new object[] { 636038375869883450, "b", "b", "b" });
dt.Rows.Add(new object[] { 636038375869883451, "b", "b", "b" });
dt.Rows.Add(new object[] { 636038375869883452, "b", "b", "b" });
dt.Rows.Add(new object[] { 636038375869883453, "b", "b", "b" });
dt.Columns.Add("NewDate", typeof(DateTime));
foreach (DataRow row in dt.AsEnumerable())
{
row["NewDate"] = DateTime.FromBinary(row.Field<long>("OldDate"));
}
dt.Columns.Remove("OldDate");
dt.Columns["NewDate"].SetOrdinal(0);
}
}
}
建議你添加新DateTime
數據表中的列。將Int64
列值轉換爲DateTime
,並按如下所示進行分配。可以將DateTime
列值格式化爲所需的格式。
DataTable dt = new DataTable("Customers");
dt.Columns.Add("BirtDate", typeof(DateTime));
dt.Columns.Add("BirtDateLong", typeof(long));
for(int i=0;i<10;i++)
{
DataRow drow = dt.NewRow();
drow["BirtDateLong"] = 636173924284229875;
dt.Rows.Add(drow);
}
IEnumerable<DataRow> rows = dt.Rows.Cast<DataRow>();
rows.ToList().ForEach(r => r.SetField("BirtDate", new DateTime(Convert.ToInt64(r["BirtDateLong"]))));
你的Int64列存儲蜱,所以你可以使用'日期時間日期時間=新日期時間(蜱);'。添加你的代碼到目前爲止您嘗試的。 –
與您需要幫助的問題相關的字符串列如何?看來你需要在C#中將Int64轉換爲DateTime以及如何在C#中訪問數據庫?這是兩個完全不同的問題。考慮把你的問題寫成一個最小的,完整的問題示例.. –