当前位置: 首页 > 编程语言 > C#

如何在C#中将毫秒转换为日期格式?分享

时间:2023-04-10 22:05:04 C#

C#中如何将毫秒转换为日期格式?在C#中,如何将Unix风格的时间戳转换为yyyy-MM-ddThh:mm:ssZ?首先将您的毫秒转换为TimeSpan:vartime=TimeSpan.FromMilliseconds(milliseconds);现在,在.NET4中,您可以使用格式字符串参数调用.ToString()。请参阅http://msdn.microsoft.com/en-us/library/system.timespan.tostring.aspx在以前的.NET版本中,您必须根据TimeSpan的属性手动构造格式化字符串。newDateTime(numTicks*10000)DateTime(longTicks)构造函数就是您所需要的。每个刻度代表100纳秒,因此乘以10000得到1毫秒。如果毫秒基于UNIX纪元时间,则可以使用:varposixTime=DateTime.SpecifyKind(newDateTime(1970,1,1),DateTimeKind.Utc);vartime=posixTime.AddMilliseconds(milliSecs);这对我有用:DateTimeOffset你可以从.FromUnixTimeMilliseconds(milliseconds);得到一个DateTime。如果需要的话。此示例将演示一般概念,但您需要知道您的开始日期是DateTime.MinValue还是其他日期:intms=1000;//一秒vardate=newDateTime(ms*10000);//构造函数采用自DateTime.MinValue(午夜,1月1日,1年)以来的100纳秒滴答数stringformatted=date.ToString("yyyy-MM-ddTHH:mm:ssZ");Console.WriteLine(格式化);做得好:publicstaticclassUnixDateTime{publicstaticDateTimeOffsetFromUnixTimeSeconds(longseconds){if(seconds253402300799L)thrownewArgumentOutOfRangeException("seconds",seconds,"");返回新的DateTimeOffset(秒*10000000L+621355968000000000L,TimeSpan.Zero);}publicstaticDateTimeOffsetFromUnixTimeMilliseconds(longmilliseconds){if(milliseconds253402300799999L)thrownewArgumentOutOfRangeException("milliseconds",milliseconds,"");返回新的DateTimeOffset(毫秒*10000L+621355968000000000L,TimeSpan.Zero);}publicstaticlongToUnixTimeSeconds(thisDateTimeOffsetutcDateTime){返回utcDateTime.Ticks/10000000L-62135596800L;}publicstaticlongToUnixTimeMilliseconds(thisDateTimeOffsetutcDateTime){returnutcDateTime.Ticks/10000L-62135596800000L;}[测试]publicvoidUnixSeconds(){DateTimeutcNow=DateTime.UtcNow;DateTimeOffsetutcNowOffset=newDateTimeOffset(utcNow);longunixTimestampInSeconds=utcNowOffset.ToUnixTimeSeconds();DateTimeOffsetutcNowOffsetTest=UnixDateTime.FromUnixTimeSeconds(unixTimestampInSeconds);Assert.AreEqual(utcNowOffset.Year,utcNowOffsetTest.Year);Assert.AreEqual(utcNowOffset.Month,utcNowOffsetTest.Month);Assert.AreEqual(utcNowOffset.Date,utcNowOffsetTest.Date);Assert.AreEqual(utcNowOffset.Hour,utcNowOffsetTest.Hour);Assert.AreEqual(utcNowOffset.Minute,utcNowOffsetTest.Minute);Assert.AreEqual(utcNowOffset.Second,utcNowOffsetTest.Second);}[测试]publicvoidUnixMilliseconds(){DateTimeutcNow=DateTime.UtcNow;DateTimeOffsetutcNowOffset=newDateTimeOffset(utcNow);经度gunixTimestampInMilliseconds=utcNowOffset.ToUnixTimeMilliseconds();DateTimeOffsetutcNowOffsetTest=UnixDateTime.FromUnixTimeMilliseconds(unixTimestampInMilliseconds);Assert.AreEqual(utcNowOffset.Year,utcNowOffsetTest.Year);Assert.AreEqual(utcNowOffset.Month,utcNowOffsetTest.Month);Assert.AreEqual(utcNowOffset.Date,utcNowOffsetTest.Date);Assert.AreEqual(utcNowOffset.Hour,utcNowOffsetTest.Hour);Assert.AreEqual(utcNowOffset.Minute,utcNowOffsetTest.Minute);Assert.AreEqual(utcNowOffset.Second,utcNowOffset.Aquset)测试;(utcNowOffset.Millisecond,utcNowOffsetTest.Millisecond);您可以从刻度构建日期时间:longticks=newDateTime(1979,07,28,22,35,5,newCultureInfo("en-US",false).Calendar).Ticks;DateTimedt3=newDateTime(ticks);Console.Write(dt3.ToString("yyyy-MM-ddThh:mm:ssZ"));这个问题应该有你需要的答案精简版:以上是C#学习教程:C#中如何将毫秒转换为日期格式?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——DateTimedate=newDateTime(long.Parse(ticks));date.ToString("yyyy-MM-ddThh:mm:ssZ");本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: