最近在写PE分析工具的时候,需要转换TimeDateStamp字段值为日期时间格式,这是C#的源码。
namespace GMTPro ... { public partial class Form1 : Form ...{ public Form1() ...{ InitializeComponent(); } private DateTime GetGMTDateTime(int Value) ...{ //GMT时间从1970年1月1日开始,先把它作为赋为初值 long Year = 1970, Month = 1, Day = 1; long Hour = 0, Min = 0, Sec = 0; //临时变量 long iYear = 0, iDay = 0; long iHour = 0, iMin = 0, iSec = 0; //计算文件创建的年份 iYear = Value / (365 * 24 * 60 * 60); Year = Year + iYear; //计算文件除创建整年份以外还有多少天 iDay = (Value % (365 * 24 * 60 * 60)) / (24 * 60 * 60); //把闰年的年份数计算出来 int RInt = 0; for (int i = 1970; i < Year; i++) ...{ if ((i % 4) == 0) RInt = RInt + 1; } //计算文件创建的时间(几时) iHour = ((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) / (60 * 60); Hour = Hour + iHour; //计算文件创建的时间(几分) iMin = (((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) % (60 * 60)) / 60; Min = Min + iMin; //计算文件创建的时间(几秒) iSec = (((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) % (60 * 60)) % 60; Sec = Sec + iSec; DateTime t = new DateTime((int)Year, (int)Month, (int)Day,(int)Hour,(int)Min,(int)Sec); DateTime t1 = t.AddDays(iDay - RInt); return t1; } private void button1_Click(object sender, EventArgs e) ...{ //708992537为秒数 DateTime t1 = GetGMTDateTime(708992537); textBox1.Text = t1.ToString("yyyy-MM-dd"); textBox2.Text = t1.ToString("HH:mm:ss"); } }}