在C#里如何把FILETIME转换成指定格式的时间字符串?

floodSahara 2014-04-01 06:11:34
在C#里,如何把一个FILETIME转换成 Sun,22-Feb-2099 00:00:00 GMT 这样格式的字符串?
...全文
694 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
报错:滴答数必须介于 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks 之间。
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
FILETIME ft = new FILETIME(); ft.dwHighDateTime = (int)(Convert.ToUInt32(3806684160) - (UInt32)0xffffffff) - 1; ft.dwLowDateTime = 31097165; long qwResult = (((long) ft.dwHighDateTime) << 32) + ft.dwLowDateTime; DateTime dt = new DateTime(qwResult); string dtstr = dt.ToString("R"); 还是不行哇
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
ft.dwHighDateTime = (int)(Convert.ToUInt32(3806684160) - (UInt32)0xffffffff) - 1;
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
那只能这样 ft.dwHighDateTime = (int)(Convert.ToUInt32(3806684160) - (UInt32)0xffffffff);
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
按您说的,按f12 找到了System.Runtime.InteropServices.ComTypes.FILETIME.cs这个文件,进去,把int 改成了uint,保存。没用,FILETIME的dwHighDateTime属性还是int的。我发现System.Runtime.InteropServices.ComTypes.FILETIME.cs是在一个临时文件夹下面的,一直要vs2005一退出,这个文件马上就不见了。
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
选择FILETIME,按F12。然后修改。
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
小白...麻烦楼主写段代码明示...拜谢~~~~
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
引用 12 楼 floodSahara 的回复:
dwHighDateTime是FILETIME类的一个属性,是系统定义的啊,如何定义成uint呢?
FILETIME类是你定义的,API结构体,你当然可以想怎么定义就怎么定义。
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
斑竹大人,请指教~~~~
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
dwHighDateTime是FILETIME类的一个属性,是系统定义的啊,如何定义成uint呢?
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
你将dwHighDateTime定义为uint不就可以了。
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
我看了一下系统的cookies文件夹里,有大量超过了int32取值范围的cookies记录,比如 YYID F0450298DD946C280703DE soso.com/ 1088 2861622144 32488736 3120040106 30363010 是不是要进行什么位运算之类的啊?
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
我试过 ft.dwHighDateTime = Convert.ToUInt32(3806684160),会报错:无法将类型“uint”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)。 因为ft.dwHighDateTime是int类型的
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
UInt32
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
谢谢 caozhy 斑竹大人的指教。是我没把问题清楚,我原本的问题是这样的: 如下的一条cookies的记录, codeID 4468-a4c8-6c9a309f5ef7 XXX.com/ 1536 3806684160 31097165 718619264 30362911 3806684160和31097165是FILETIME的高位和低位,如何用这两个值合成一个FILETIME,并把这个FILETIME转换成 “Sun,22-Feb-2099 00:00:00 GMT” 这样的字符串。 我目前的做法: FILETIME ft = new FILETIME(); ft.dwHighDateTime = 3806684160; ft.dwLowDateTime = 31097165; ft.dwHighDateTime是int,而3806684160已经超过int32的取值区间,怎么办
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
在google里面键入FILETIME to DateTime,第一条就是。
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
与其问人不如自己搜索下 http://msdn.microsoft.com/en-us/library/system.datetime.fromfiletime.aspx
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/zdtaw1bw(v=vs.110).aspx
threenewbee 2014-04-01
  • 打赏
  • 举报
回复
DateTime.ToString("R")
floodSahara 2014-04-01
  • 打赏
  • 举报
回复
自己顶一下~~
加载更多回复(1)

111,088

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧