首页 > 代码库 > DateTime使用(时区)
DateTime使用(时区)
一、时区的用法
项目背景:商业软件涉及到许可证的问题,用于管理客户对软件的使用。项目组开发了一个生成license的工具,里面包含一系列的规则(如licenseEffectiveStartDate以及licenseExpirationDate)。那么问题来了:假如licenseEffectiveStartDate设定为2014/10/17,软件是给美国客户来使用,那么在软件中要怎样设定才能让美国客户在其当地时间的2014/10/17才能使用软件呢。
二、解决方案
- 在license生成工具中添加时区列表,用来设定license是对哪个时区的客户使用的。
1 //得到时区列表2 ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();3 //得到所选择的时区4 TimeZoneInfo timeZone = timeZones.First(o => o.Id == cmb_TimeZone.SelectedValue.ToString());5 int timeZone = timeZone.BaseUtcOffset.Hours;
- 从NTP服务器中取出UTC时间,然后加上客户所在的时区,也即是license里面设定的时区,就可以得到客户的当地时间LocalDateTime。
1 /// <summary> 2 /// get current date time from net work. 3 /// </summary> 4 /// <returns></returns> 5 private DateTime GetLocalDateTime(int timeZone) 6 { 7 DateTime utcDateTime = new DateTime(); 8 try 9 {10 utcDateTime = NTPHelper.GetUTCDate();11 return utcDateTime.AddHours(timeZone);12 }13 catch14 {15 throw new Exception(CMsgDisConncetion);16 }17 }
- DateTime.Compare(t1,t2)即可判断软件何时可用,何时到期。
1 /// <summary> 2 /// determine whether current date reach for specific date 3 /// </summary> 4 /// <param name="currentDateTime">current date time</param> 5 /// <param name="specificDateTime">sepcific date time</param> 6 /// <returns></returns> 7 private bool IsReachSpecificDate(DateTime currentDateTime, DateTime specificDateTime) 8 { 9 return DateTime.Compare(currentDateTime, specificDateTime) > 0 ? true : false;10 }
DateTime使用(时区)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。