2017-08-29 71 views
-4

我有用于从数据库设置时间戳的属性。如何在毫秒中包含DateTime

string format = "dd/MM/yyyy HH:mm:ss.ff"; 
    /// <summary> 
    /// Gets the DateTime data and converts it to UTC 
    /// </summary> 
    public DateTime TimeStamp 
    { 
    get 
    { 
     return _TimeStamp.ToLocalTime(); 
    } 
    set 
    { 
     if (_TimeStamp != null) 
     { 
     _TimeStamp = value; 
     }   
    } 
    } 

如何我从我的DATABSE把事情如下:

using (SQLiteConnection con = new SQLiteConnection(builder.ConnectionString)) 
     { 
      con.Open(); 

      string stm = @"Select * From Messages m join MessageDetails md on m.MessageID = md.MessageID GROUP BY m.MessageID"; 

      using (SQLiteCommand cmd = new SQLiteCommand(stm, con)) 
      { 
      using (SQLiteDataReader rdr = cmd.ExecuteReader()) 
      { 
       while (rdr.Read()) 
       { 
       MessageDetails detail = new MessageDetails { MessageID = rdr.GetString(0), TimeStamp = rdr.GetDateTime(1), StoreNumber = rdr.GetString(2), TerminalNumber = rdr.GetInt32(3) }; 

       ViewModel.MetricsResult.Add(detail); 
       } 
      } 
      } 

这部分是从另一个类。

数据库吐出时间戳,包括星期几,日期,4位数年份,然后显示小时(hh),分钟(mm)和秒数(ss)。但我想包括毫秒。

我必须将我的DateTime转换为字符串吗?还是有办法做到这一点,仍然保持一切为DateTime?

为了以毫秒显示我的DateTime,我需要在这个属性内做些什么?提前谢谢了。

+4

听起来这个问题与您向我们展示的代码无关,以及与您如何从数据库中提取代码有关的所有事情 - 您没有向我们展示过。 (我个人建议不要转换到当地时间,特别是因为你只能在一个方向上做到这一点,但这是另一回事。)请澄清你的问题。 –

+1

你需要澄清你的问题。但为了回答某些部分,'DateTime'结构可以以[[Tick]]的粒度存储(https://msdn.microsoft.com/en-us/library/system.datetime.ticks(v = vs.110 ).aspx#Remarks)等于100纳秒。要显示毫秒,您可以使用[自定义时间格式fff](https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/custom-date-and-time-format-strings#the -fff - 自定义格式说明符)。正如Jon指出的那样,您的问题还包括将DateTime存储在数据库中并在C#应用程序和数据库之间来回传输 – Vikhram

回答

-2

使用三个“f” string format =“dd/MM/yyyy HH:mm:ss.fff”;

+0

为什么他需要正好使用三个'f'符号?或者它甚至指的是这个问题本身? –

+1

@ m.rogalski,因为这将是厘秒,而不是毫秒,否则 –

+0

@ MathiasR.Jessen我期待看到一些更新的答案有一些细节,而不是评论。 –