目标将“1199351662”(数字格式)转换为“2008-01-03 17:14:22”(日期格式)1199351662是通过以下方法(C++)生产的。 struct _timeb tb;
_ftime64_s(&tb);
__int64 nTimeTick = (__int64)(tb.time * (1000) + (__int64)tb.millitm);
__int64 nMinute = nTimeTick / 1000; //nMinute的值就是1199351662在c++中可以通过_localtime64_s( &when, &nMinute ); 这个方法还原日期出来,就是将1199351662转换为2008-01-03 17:14:22现在提出的问题:如何在C#中讲这个数字还原为日期,就是将1199351662转换为2008-01-03 17:14:22急用。谢谢高手们。
_ftime64_s(&tb);
__int64 nTimeTick = (__int64)(tb.time * (1000) + (__int64)tb.millitm);
__int64 nMinute = nTimeTick / 1000; //nMinute的值就是1199351662在c++中可以通过_localtime64_s( &when, &nMinute ); 这个方法还原日期出来,就是将1199351662转换为2008-01-03 17:14:22现在提出的问题:如何在C#中讲这个数字还原为日期,就是将1199351662转换为2008-01-03 17:14:22急用。谢谢高手们。
这个DateTime量对应的C# Ticks值是
633349772620000000
这个数字代表从1970年1月1日以来的秒数...这是老Unix系统的时间戳表示法...另外这个时间是UTC...根据你的时区转换一下...
{
static void Main(string[] args)
{
// 你得到的数字是自 1970 年 1 月 1 日 8 点整到 2008-01-03 17:14:22 经过的秒数
long nMinute = 1199351662L; // 初始化一个C# DateTime 对象
// 参数值表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。
DateTime when = new DateTime(621356256000000000L + nMinute * 10000000L); Console.WriteLine(when);
}
}
DateTime t = new DateTime(1970, 1, 1, 8, 0, 0).AddSeconds(1199351662);
System.DateTime time= new System.DateTime(1970, 1, 1).ToLocalTime().AddSeconds(1199351662);
{
static void Main(string[] args)
{
// 你得到的数字是自格林尼治时间(UTC) 1970 年 1 月 1 日午夜 12:00:00 起的秒数
// 相当于本地时间即北京时间(Local) 1970 年 1 月 1 日上午 8:00:00 起的秒数
double nMinute = 1199351662; // 得到 1970 年 1 月 1 日午夜 12:00:00, 但其只读属性 Kind 值为 Unspecified,表示它代表了一个未定义时区的时间。
DateTime when = new DateTime(1970, 1, 1); // 把 Unspecified 时间转换为本地时间。
// 按北京时间会增加8小时
when = when.ToLocalTime();
// 加上时间偏移量,参数单位为秒
when = when.AddSeconds(nMinute); Console.WriteLine(when);
}
}