using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices;namespace Test { public class win32api { [DllImport("Kernel32.dll")] public static extern bool SetLocalTime(ref SYSTEMTIME st); [DllImport("Kernel32.dll")] public static extern void GetSystemTime(out SYSTEMTIME st); } [StructLayout(LayoutKind.Sequential)] public struct SYSTEMTIME { public short wYear; public short wMonth; public short wDayOfWeek; public short wDay; public short wHour; public short wMinute; public short wSecond; public short wMilliseconds; public DateTime ToDateTime() { return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds); } } public class test { public SYSTEMTIME GetTime() { SYSTEMTIME systemTime = new SYSTEMTIME(); return win32api.GetSystemTime(out systemTime); } } } 试试吧
不知道精度够不够
Windows NT 3.5 和更高版本 ... 10 毫秒
Windows 98 ................. 55 毫秒
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.fffffff");
DateTime.Now.Millisecond 是啥??
因为NET里(不仅是NET,还有很多平台和系统都是如此) 系统时间信息 不是精确到毫秒级的。
所以 DateTime.Now.Millisecond 也不是。 我记得以前看到资料好像是 上下误差不超过15毫秒。
如果要非常精确到毫秒级就要读取系统硬件的时钟计数器了好像,或者根据CPU周期来计算。
如果非要精确,请查询CPU周期。
学习中
如果非要精确,请查询CPU周期。
精确到望毫秒有嘛用啊
System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.ms")
DateTime.Now 可以直接精确到秒!
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;namespace Test
{
public class win32api
{
[DllImport("Kernel32.dll")]
public static extern bool SetLocalTime(ref SYSTEMTIME st);
[DllImport("Kernel32.dll")]
public static extern void GetSystemTime(out SYSTEMTIME st);
} [StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME
{
public short wYear;
public short wMonth;
public short wDayOfWeek;
public short wDay;
public short wHour;
public short wMinute;
public short wSecond;
public short wMilliseconds;
public DateTime ToDateTime()
{
return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds);
}
} public class test
{
public SYSTEMTIME GetTime()
{
SYSTEMTIME systemTime = new SYSTEMTIME();
return win32api.GetSystemTime(out systemTime);
}
}
}
试试吧