您的位置:首页 > 其它

UTC时间与北京时间相互转换

2016-11-23 23:34 507 查看

第一种方法

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

public class HomeController : Controller
{
public ActionResult Index()
{
//本地时间(北京时间)
DateTime dt = Convert.ToDateTime("2016-06-11 23:59:59");

//TimeZone类表示时区,TimeZone.CurrentTimeZone方法:获取当前计算机的时区。
TimeZone tz = TimeZone.CurrentTimeZone;

//获取当前计算机的时区与utc时间的时间差(北京时间和utc时间相差8个小时)
TimeSpan ts = tz.GetUtcOffset(dt);

//将当前计算机所在时区的时间(即:北京时间) 转换成UTC时间
DateTime dtGMT = tz.ToUniversalTime(dt);

//将UTC时间转换成本地时间
DateTime localtime = tz.ToLocalTime(dtGMT);

return View();
}
}


第二种方法

public class HomeController : Controller
{
public ActionResult Index()
{
//本地时间(北京时间)
DateTime dt = Convert.ToDateTime("2016-06-11 23:59:59");

//将北京时间转换成utc时间 (北京时间是utc时间+8小时,所以此时utc时间应该是 2016-06-11 15:59:59)
DateTime utcNow = dt.ToUniversalTime();

//将utc时间转换成秒 (即将1970-01-01 00:00:00 到 2016-06-11 15:59:59的时间转换成秒)
double utc = ConvertDateTimeInt(utcNow);

//将秒数转换成北京时间 (其实就是将utc时间转换成北京时间),所以又得到2016-06-11 23:59:59
DateTime dtime = ConvertIntDatetime(utc);

return View();
}

/// <summary>
/// 将时间转换成秒(这个秒是指1970-1-1 00:00:00 到你指定的时间之间的秒数)
/// </summary>
/// <param name="time">指定时间</param>
/// <returns>秒数</returns>
public double ConvertDateTimeInt(System.DateTime time)
{
double intResult = 0;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
intResult = (time - startTime).TotalSeconds;
return intResult;
}

/// <summary>
/// 将秒数转换成北京时间
/// </summary>
/// <param name="utc">秒数</param>
/// <returns>北京时间</returns>
public DateTime ConvertIntDatetime(double utc)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
startTime = startTime.AddSeconds(utc);
startTime = startTime.AddHours(8);//转化为北京时间(北京时间=UTC时间+8小时 )
return startTime;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: