我有一个包含四列和n行的数据表。在第一列中,我只有表示日期时间的整数(Int64)。在其他三列中,我有字符串。
我只想将第一列中的整数值更改为以下格式的日期时间(yyyy-MM-ddTHH:mm:ss.fffffff)。
我附上了我试图做的事情。但我有一个例外,就是无法将Int64转换为DateTime。
所以这就是我需要的: 1.如何循环通过第一列。 2.如何将第一列中的每个条目从Int64更改/转换为DateTime
答案 0 :(得分:0)
循环DataTable.Rows
获取Rows[i][0]
设为new DateTime(long.Parse("Your integer"))
答案 1 :(得分:0)
您的int64列商店标记,您可以使用scripts.js
将其简单地转换为DateTime
类型,因此使用DateTime dateTime = new DateTime(ticks);
循环可以像
foreach
答案 2 :(得分:0)
将ticks转换为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");
}
但是,如果您的“日期”列的类型为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");
}
答案 3 :(得分:0)
试试这个
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);
}
}
}
答案 4 :(得分: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"]))));