Luc*_*yHK 216 c# precision datetime milliseconds
如何以毫秒精度精确构造实际时间的时间戳?
我需要像16.4.2013 9:48:00:123这样的东西.这可能吗?我有一个应用程序,我每秒采样值10次,我需要在图表中显示它们.
Jon*_*eet 287
如何以毫秒精度精确构造实际时间的时间戳?
我怀疑你的意思是毫秒精度.DateTime具有很高的精度,但在精度方面相当粗糙.一般来说,你不能.通常系统时钟(从中DateTime.Now获取数据)的分辨率大约为10-15毫秒.有关更多详细信息,请参阅Eric Lippert 关于精度和准确性的博客文章.
如果您需要比此更精确的计时,您可能需要考虑使用NTP客户端.
但是,目前还不清楚你真的需要毫秒精度.如果您不关心确切的时间 - 您只是想以正确的顺序显示样本,并且具有"非常好"的准确度,那么系统时钟应该没问题.我建议你使用DateTime.UtcNow而不是DateTime.Now避免夏令时转换等时区问题.
如果您的问题实际上只是将转换DateTime为精确到毫秒级的字符串,我建议使用:
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
(请注意,与您的示例不同,这是可排序的,并且不太可能导致混淆,无论是"月/日/年"还是"日/月/年".)
Pyr*_*cer 110
这应该工作:
DateTime.Now.ToString("hh.mm.ss.ffffff");
Run Code Online (Sandbox Code Playgroud)
如果您不需要显示它并且只需要知道时差,那么就不要将它转换为String.保持原样,DateTime.Now();
并TimeSpan用来了解时间间隔之间的差异:
例
DateTime start;
TimeSpan time;
start = DateTime.Now;
//Do something here
time = DateTime.Now - start;
label1.Text = String.Format("{0}.{1}", time.Seconds, time.Milliseconds.ToString().PadLeft(3, '0'));
Run Code Online (Sandbox Code Playgroud)
Joz*_*car 25
我正在寻找一个类似的解决方案,基于此线程上的建议,我使用以下
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff")
,它的工作就像魅力.注意:这.fff是您要捕获的精确数字.
Jac*_*man 20
使用DateTime Structure以毫秒和格式如下:
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
CultureInfo.InvariantCulture);
timestamp = timestamp.Replace("-", ".");
Run Code Online (Sandbox Code Playgroud)
小智 16
Pyromancer的答案对我来说似乎很好,但也许你想要:
DateTime.Now.Millisecond
Run Code Online (Sandbox Code Playgroud)
但如果您要比较日期,TimeSpan就是您的选择.
小智 6
如果您仍然需要日期而不是像其他答案一样的字符串,只需添加此扩展方法即可。
public static DateTime ToMillisecondPrecision(this DateTime d) {
return new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute,
d.Second, d.Millisecond, d.Kind);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
355396 次 |
| 最近记录: |