datatable datetime列没有毫秒

时间:2015-10-09 03:31:57

标签: c# datetime datatable milliseconds

我的数据库列中的日期时间值为yyyy-MM-dd HH:mm:ss.fff。

但是当我把它变成一个.net数据表,然后把它作为DateTime ...我没有得到毫秒的部分。

我缺少任何类型的演员吗?

String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", Convert.ToDateTime(dtRow[colIndex]))

这是我的代码,其中dtRow是我的数据表中的特定列。

编辑:

text-align: center

“2014-07-28 15:18:43.000”

其中实际值为“2014-07-28 15:18:43.866”。

谢谢!

4 个答案:

答案 0 :(得分:1)

我遇到了这个导致我在这里的问题。默认的“ToString”使用CurrentCulture,它(很可能)使用的格式为毫秒。因此,Parsing等不起作用,因为它将它转换为String(这是问题!)并再次返回,从而丢弃ms。

但是,“对象”是DateTime。这意味着您可以简单地将项目转换为DateTime变量并使用它。在我的情况下,我有一个SQL语句的日期时间,我需要存储为一个字符串 - 并注意到它们在解析时都有.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

答案 1 :(得分:0)

这将为您解决问题

DateTime dt = DateTime.Parse(dtRow[colIndex]);
String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", dt)

答案 2 :(得分:0)

试试这个:

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));

答案 3 :(得分:0)

    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];