java时区转换夏令时_实现时区的转换--涉及到冬令时和夏令时的时候

更新时间:2023-06-11 08:19:35 阅读: 评论:0

java时区转换夏令时_实现时区的转换--涉及到冬令时和夏令时
的时候
#时区转换
主要是⽤来转换时区⽤的,特别涉及到冬令时和夏令时的区域,这样会很烦,所以需要⽤个⽅法来转换
这个主要是创建⼀些模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tools.TimeZone
{
///
/// 国家时区类型
///
public enum ZoneType
{
Same = 0,//普通的时区转换
Summer = 1,//启⽤夏时令 在夏令时的时候⽐冬令时早1个⼩时
}
///
/// 时区
/
//
public class TimeZoneModel
{
///
/// 冬令时GMT
///
public int GMT { get; t; }
///
/// 这个国家应⽤的时区是什么
///
public ZoneType ZoneType { get; t; }
/
// 时区名称
///
public string ZoneName { get; t; }
///
/// 时区备注
///
public string ZoneRemark { get; t; } ///
/// 夏时令开始时间
///
public TimeNode BeginDate { get; t; } ///
/// 夏时令结束时间
/
//
public TimeNode EndDate { get; t; } }
///
/// 时间节点
///
public class TimeNode
{
///
/// ⽉份
///
public int Month { get; t; }
/
//
/// 排序⽅式
///
public Sort Sort { get; t; }
///
/// 第⼏个
///
public int Num { get; t; }
/// 周⼏
///
public DayOfWeek DayOfWeek { get; t; }
/
//
/// ⼏点开始
///
public int Hours { get; t; } = 0;//⼀般是0点开始}
///
/// 查找⽅式
///
public enum Sort
{
///
/// 倒数第⼏个
/
//
desc = 0,
///
/// 正数第⼏个
///
asc=1,
}
}
下⾯的是具体的⽅法
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tools.TimeZone
public static class DateZoneHelper
{
private static List _zoneList;
private static readonly string PATH = "TimeZone.json";
public static List ZoneList
{
get
{
if (_zoneList == null)
{
//从数据源中获取数据
//string Path = "TimeZone.json";
if (!File.Exists(PATH))
{
_zoneList = new List();
}
el
{
string str = File.ReadAllText(PATH);
//JArray array = JArray.Par(str);
_zoneList=JsonConvert.DerializeObject>(str);
}
}
return _zoneList;
}
}
public static TimeZoneModel GetZone(string ZoneName)
{
return ZoneList.SingleOrDefault(a => a.ZoneName == ZoneName);
}
public static DateTimeOfft ConvertDate(this DateTimeOfft dateTime, string ZoneName) {
TimeZoneModel zone = GetZone(ZoneName);//获取当前时区的参数
return dateTime.ConvertDate(zone);
}
public static DateTimeOfft ConvertDate(this DateTimeOfft dateTime, TimeZoneModel zone)
{
if (zone==null)
{
return DateTimeOfft.MinValue;
}
DateTimeOfft date = DateTimeOfft.MinValue;
DateTime dtUTC = dateTime.UtcDateTime;
switch (zone.ZoneType)
{
ca ZoneType.Summer:
DateTime dtToDate = dtUTC.AddHours(zone.GMT+1);//假设当前时间是夏令时
DateTime BeginDate = GetDateByNodeTime(dtToDate.Year,zone.BeginDate).AddHours(1);//夏令时开始时间DateTime EndDate = GetDateByNodeTime(dtToDate.Year, zone.EndDate);//夏令时结束时间
if (BeginDate<= dtToDate&& dtToDate< EndDate)
{
date= dateTime.ToOfft(new TimeSpan(TimeSpan.TicksPerHour * (zone.GMT+1)));
}
el
{
date = dateTime.ToOfft(new TimeSpan(TimeSpan.TicksPerHour * (zone.GMT)));
//date = new DateTimeOfft(dtUTC.AddHours(zone.GMT), new TimeSpan(TimeSpan.TicksPerHour * zone.GMT)); }
break;
ca ZoneType.Same:
default:
DateTime dtTemp = dtUTC.AddHours(zone.GMT);
date = dateTime.ToOfft(new TimeSpan(TimeSpan.TicksPerHour * (zone.GMT)));
//date = new DateTimeOfft(dtTemp, new TimeSpan(TimeSpan.TicksPerHour * zone.GMT));
break;
}
return date;

本文发布于:2023-06-11 08:19:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/168644277572102.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java时区转换夏令时_实现时区的转换--涉及到冬令时和夏令时的时候.doc

本文 PDF 下载地址:java时区转换夏令时_实现时区的转换--涉及到冬令时和夏令时的时候.pdf

标签:时区   时间   转换   时令   冬令
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|