#需求:用户在设置北京时间,自动算出设备所在时区的时间
设计到几个要点:
1.对时区的理解
2.获取设备时区时间
3.时区时间转换
效果图:(我当前时区是)
#我电脑时区
#代码:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
//获取指定时区时间
function getTimeZoneDate(timezone) {
var offset_GMT = new Date().getTimezoneOffset(); // 本地时间和格林威治的时间差,单位为分钟
var nowDate = new Date().getTime(); // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
var targetDate = new Date(nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000);
return targetDate;
}
//根据传入时间,转换差异时区时间
function getTimeZoneDate2(date, timezone) {
var nowDate = date.getTime(); // 当前时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
var targetDate = new Date(nowDate - timezone * 60 * 60 * 1000);
return targetDate;
}
//获取当前时区
function getCurrentZone() {
var timezone = new Date().getTimezoneOffset() / 60 * -1;//获取时区; //目标时区时间,东八区 东时区正数 西市区负数
return timezone;
}
//时间格式化
function formatDate2Str(date) {
//输出时间
var yy = date.getFullYear()
var MM = date.getMonth() + 1
// +1使用new Date(YYYY,MM,DD,hh,mm,ss)这种方式月数不会默认-1但是使用new Date('YYYY-MM-DD hh:mm:ss')会默认-1
MM = MM < 10 ? '0' + MM : MM
var dd = date.getDate()
dd = dd < 10 ? '0' + dd : dd
var hh = date.getHours()
hh = hh < 10 ? '0