600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php utc 北京时间 美国各个时区转换成北京时间 utc gmt

php utc 北京时间 美国各个时区转换成北京时间 utc gmt

时间:2020-12-27 12:52:34

相关推荐

php utc 北京时间 美国各个时区转换成北京时间 utc gmt

工作中用到将美国的格格时区转换成北京时间,研究了一下总结了一下方式用来转换。 根据时间差得到下面的转换时间的差值,然后进行统一处理。

export function utcChangeBeijing(date) {

var time_zone = Number(localStorage.getItem('TimeZone')) === 0 ? 1 : Number(localStorage.getItem('TimeZone'))

if (date == '' || date == null) {

return ''

} else {

switch(time_zone) {

case 1:

// 处理北京时间

return TimeFormat(date, 0)

break;

case 2:

// 东部时间 有夏时令和冬时令 相差12个小时, 冬时令相差13个小时

if (IsSumber(date, 1)) {

return TimeFormat(date, 12)

} else {

return TimeFormat(date, 13)

}

case 3:

// 中部时间 有夏时令和冬时令 相差13个小时, 冬时令相差14个小时

if (IsSumber(date, 1)) {

return TimeFormat(date, 13)

} else {

return TimeFormat(date, 14)

}

case 4:

// 山地时间 有夏时令和冬时令 夏时令 相差14个小时, 冬时令相差15个小时

if (IsSumber(date, 1)) {

return TimeFormat(date, 14)

} else {

return TimeFormat(date, 15)

}

case 5:

// 亚利桑那时间 相差15个小时

return TimeFormat(date, 15)

case 6:

// 太平洋时间 有夏时令和冬时令 夏时令 相差15个小时, 冬时令相差16个小时

if (IsSumber(date, 1)) {

return TimeFormat(date, 15)

} else {

return TimeFormat(date, 16)

}

case 7:

// 阿拉斯加时间 有夏时令和冬时令 夏时令 相差17个小时, 冬时令相差18个小时

if (IsSumber(date, 1)) {

return TimeFormat(date, 17)

} else {

return TimeFormat(date, 18)

}

case 8:

// 夏威夷时间 没有夏时令和冬时令 相差18个小时

return TimeFormat(date, 18)

}

}

复制代码

}

#格式化时间转换成YYYY-MM-DD hh-mm-ss,可能方式有点笨拙。就这么解决了。

function TimeFormat(date, timeNumber) {

date = new Date(date)

var time = date.getTime() + timeNumber * 3600 * 1000

var dateNow = new Date(time);

var Y = dateNow.getFullYear() + '-';

var M = (dateNow.getMonth() + 1 < 10 ? '0' + (dateNow.getMonth() + 1) : dateNow.getMonth() + 1) + '-';

var D = (dateNow.getDate() <10 ) ? '0' + dateNow.getDate() + ' ' : dateNow.getDate() + ' ';

var h = (dateNow.getHours() < 10) ? '0' + dateNow.getHours() + ':' : dateNow.getHours() + ':';

var m = (dateNow.getMinutes() < 10) ? '0' + dateNow.getMinutes() + ':' : dateNow.getMinutes() + ':';

var s = (dateNow.getSeconds() < 10) ? '0' + dateNow.getSeconds() : dateNow.getSeconds();

return Y + M + D + h + m + s;

复制代码

}

#判断是东部时区还是西部时区,默认按照东部时区处理了。后台用的php竟然能全部兑上。好神奇

function IsSumber(date, isEast) {

date = new Date(date)

var start = new Date(date.getTime());

start.setMonth(0);

start.setDate(1);

start.setHours(0);

start.setMinutes(0);

start.setSeconds(0);

var middle = new Date(start.getTime());

middle.setMonth(6);

// 如果年始和年中时差相同,则认为此国家没有夏令时

if ((middle.getTimezoneOffset() - start.getTimezoneOffset()) == 0) {

return false;

}

var margin = 0;

if (isEast == 1) {

margin = middle.getTimezoneOffset();

} else {

margin = start.getTimezoneOffset();

}

if (date.getTimezoneOffset() == margin) {

return true;

}

return false;

复制代码

}

在这里额外提醒,如果本地电脑设置的语言不同的话,尽量增加new Date()返回的后面时区的语言。上面这套仅对中国用户有用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。