datatable datetime列没有毫秒
本文关键字:datetime datatable | 更新日期: 2023-09-27 18:17:03
我的数据库列中有一个日期-时间值为yyyy-MM-dd HH:MM:ss.fff。
但是当我把它放到.net数据表中,并把它作为DateTime。。。我没有得到毫秒部分。
我缺了什么类型的铸件吗?
Convert.ToDateTime(dtRow[colIndex])
这是我的代码,其中dtRow是我的数据表中的一个特定列。
编辑:
String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", Convert.ToDateTime(dtRow[colIndex]))
"2014-07-28 15:18:43.000">
其中实际值为"2014-07-28 15:18:43.866"。
谢谢!
我遇到了这个问题,正是这个问题把我带到了这里。默认的"ToString"使用CurrentCulture,CurrentCulture(很可能(使用省略毫秒的Format。因此,解析etc不起作用,因为这会将其转换为字符串(这就是问题所在!(并再次返回,从而丢弃ms。
但是,"对象"是DateTime。这意味着你可以简单地将项强制转换为DateTime变量并使用它。在我的例子中,我有一个来自SQL语句的DateTime,我需要将其存储为String,并注意到它们在解析时都有.000毫秒。
我的特殊要求是我不知道列的类型,因此在末尾有默认的ToString。
private static string ConvertFieldToString(DataRow row, string fieldName)
{
if (row.IsNull(fieldName))
return null;
if (row[fieldName].GetType() == typeof(DateTime))
{
DateTime dt = (DateTime)row[fieldName];
return dt.ToString("yyyy-MM-dd hh:mm:ss.fff tt");
}
return row.ToString();
}
输出将看起来像:2018-04-18 03:30:43.233 PM
在MSDN上阅读更多信息:https://msdn.microsoft.com/en-us/library/k494fzbf(v=vs.110(.aspx
这将为您的带来好处
DateTime dt = DateTime.Parse(dtRow[colIndex]);
String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", dt)
试试这个:
string dateString = dtRow[colIndex];
string format = "yyyy-MM-dd HH:mm:ss.fff";
DateTime result = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
Console.WriteLine("{0} converts to {1}.", dateString, String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", result));
static void Main(string[] args)
{
var dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("date", typeof(DateTime));
for (int i = 0; i < 10; ++i)
{
var r = dt.NewRow();
r[0] = i;
r[1] = DateTime.Now.AddMinutes(-i);
dt.Rows.Add(r);
}
foreach (var r in dt.Rows.OfType<DataRow>())
{
Console.WriteLine("{0} - {1:yyyy-MM-dd HH:mm:ss.fff}", r[0], r[1]);
}
Console.ReadLine();
}
如果添加到DataTable
中的值是DateTime
,那么您不需要转换任何内容,它已经是DateTime
了,格式化函数会很好地解决所有问题。如果您需要以编程方式访问单个属性,只需强制转换:
DateTime timestamp = (DateTime)r[1];