net中的c#语言,对日期时间的操作,主要包括时间戳转换、不同时区的时间转换,还有两个时间的比较,这篇博客就来讲解这些问题。
1、时间戳转换
生成时间戳长度一般包括10位和13位(现在更普遍使用13位的)代码处理也简单;将时间戳转成时间的时候,也支持10位的时间戳转成时间
//1,时间戳互转 long timeStamp31 = DateTimeHelper.GetStampByDateTime(DateTime.Now); DateTime dtm312 = DateTimeHelper.GetDateTimeByStamp(timeStamp31.ToString());
2、字符串转成时间
最大的难点是格式,受时区和操作系统的时间格式,时间的格式简单直五花八门。如果格式确定,就可以用下面这个方法实现。
如果格式不知道,其实也可以使用DateTime.TryParse和DateTime.TryParseExact这2个方法,它们能识别出很多格式
//2,字符串互转 string format32 = "yyyyMMddHHmmssfff"; string dtm32 = DateTime.Now.ToString(format32); DateTime dtm322 = DateTimeHelper.GetDateTimeByString(dtm32, format32);
3、时区转换
3.1、获取时区列表
可能你只知道我们中国的北京时间是东八区,其实还有很多时区。获取时区列表可以用下面这个方法实现
//3.1,获取时区列表 List<TimeZoneInfo> listTimeZone = TimeZoneInfo.GetSystemTimeZones().ToList(); foreach (TimeZoneInfo tz in listTimeZone) { string log = string.Format("Id:{0},DisplayName:{1}", tz.Id, tz.DisplayName); Program.WriteLine(log); }
3.2、北京时间转为其他时区的
//3.2,中国时区的时间转为任意其他时区的时间 TimeZoneInfo tziTarget = listTimeZone[4]; DateTime dtmT33 = TimeZoneInfo.ConvertTime(DateTime.Now, tziTarget);
3.3、两个时区的时间任意转换
//3.3,两个时区的时间任意转换 TimeZoneInfo tziSource = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"); DateTime dtmS34 = new DateTime(2022, 10, 6, 15, 5, 1, DateTimeKind.Unspecified); DateTime dtmT34 = TimeZoneInfo.ConvertTime(dtmS34, tziSource, tziTarget);
4、2个时间比较
直接相减,差值用TimeSpan接收就行了
//4,2个时间比较,直接使用TimeSpan DateTime dtm351 = DateTime.Now; DateTime dtm352 = dtm351.AddMinutes(1000); TimeSpan ts352 = dtm352 - dtm351; double d352 = ts352.TotalMinutes;
相关阅读
文章评论