扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
字符串2013-10-05T02:00:00.000+09:30可以使用split方法分割
专注于为中小企业提供成都网站建设、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业细河免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
var fromDate= "2013-10-05T02:00:00.000+09:30".split('T').shift().split('-'); //得到["2013", "10", "05"]
如此就可以设置进Date对象
-----------------
如果不想与本地时区有关联的话就统一用UTC的方法好了
具体时区再自己计算
比如,+9:30区
var d = new Date();
//9小时就是9*60分钟,加上30分钟,再转换为毫秒
d.setTime(d.getTime()+(9*60+30)*60*1000);
d.toUTCString();
-----------------
Date对象的UTC有关的方法:
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)
toUTCString() 根据世界时,把 Date 对象转换为字符串
把下面的保存为html直接可以运行看到的。。
举一反三就是你想要的了。。。。。
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
html
head
script language="JavaScript"
// function to calculate local time
// in a different city
// given the citys UTC offset
function calcTime(city, offset) {
// create Date object for current location
d = new Date();
// convert to msec
// add local time zone offset
// get UTC time in msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// create new Date object for different city
// using supplied offset
nd = new Date(utc + (3600000*offset));
// return time as a string
return "The local time in " + city + " is " + nd.toLocaleString();
}
// get Bombay time
alert(calcTime('Bombay', +5.5));
// get Singapore time
alert(calcTime('Singapore', +8));
// get London time
alert(calcTime('London', +1));
/script
/head
body
/body
/html
前言:有时候后端返回给前端的时间格式是这种的
该时间格式为UTC格式,"+00:00","+"代表是东边的时区,当"+"变成"-"时,代表是西边的时区,后面紧接着的两个数字代表的是具体那个时区,如"+08"代表东八区,":"后的两个数代表和伦敦协调时偏差多少分钟。
将该时间格式改成"YYYY-mm-dd HH:MM:SS"等格式,则需要处理后端返回时区与本时区时间的偏差。js的Date对象提供getTimezoneOffset函数,用于获取本时区与伦敦协调时的时间差,返回数值的单位是分钟。
Date对象的toLocaleDateString函数,在PC端和移动端有差别,在安卓移动端会比PC端的返回值多"上午"、"下午"等。
没有直接使用new Date(value)来获取日期,是因为在IOS系统下,年月日的分隔符只有是"/"的字符串(如"2019/09/09")用new Date(string)得到正确的日期。
还有另一种格式GMT,相较于UTC格式,GMT没有那么精确,不能具体到毫秒。
以下内容为追加GMT格式转换
参考:
JS操作时间 - UNIX时间戳简单介绍 - 阿胜4K
世界协调时间(UTC)
MDN Date
getTimezoneOffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。
所以 咱们的时间早!~太阳从东方升起!~
可以试试这个:
static getTimezoneName() {
let tmSummer = new Date(Date.UTC(2005, 6, 30, 0, 0, 0, 0));
let so = -1 * tmSummer.getTimezoneOffset();
let tmWinter = new Date(Date.UTC(2005, 12, 30, 0, 0, 0, 0));
let wo = -1 * tmWinter.getTimezoneOffset(); if (-660 == so -660 == wo) return 'Pacific/Midway'; if (-600 == so -600 == wo) return 'Pacific/Tahiti'; if (-570 == so -570 == wo) return 'Pacific/Marquesas'; if (-540 == so -600 == wo) return 'America/Adak'; if (-540 == so -540 == wo) return 'Pacific/Gambier'; if (-480 == so -540 == wo) return 'US/Alaska'; if (-480 == so -480 == wo) return 'Pacific/Pitcairn'; if (-420 == so -480 == wo) return 'US/Pacific'; if (-420 == so -420 == wo) return 'US/Arizona'; if (-360 == so -420 == wo) return 'US/Mountain'; if (-360 == so -360 == wo) return 'America/Guatemala'; if (-360 == so -300 == wo) return 'Pacific/Easter'; if (-300 == so -360 == wo) return 'US/Central'; if (-300 == so -300 == wo) return 'America/Bogota'; if (-240 == so -300 == wo) return 'US/Eastern'; if (-240 == so -240 == wo) return 'America/Caracas'; if (-240 == so -180 == wo) return 'America/Santiago'; if (-180 == so -240 == wo) return 'Canada/Atlantic'; if (-180 == so -180 == wo) return 'America/Montevideo'; if (-180 == so -120 == wo) return 'America/Sao_Paulo'; if (-150 == so -210 == wo) return 'America/St_Johns'; if (-120 == so -180 == wo) return 'America/Godthab'; if (-120 == so -120 == wo) return 'America/Noronha'; if (-60 == so -60 == wo) return 'Atlantic/Cape_Verde'; if (0 == so -60 == wo) return 'Atlantic/Azores'; if (0 == so 0 == wo) return 'Africa/Casablanca'; if (60 == so 0 == wo) return 'Europe/London'; if (60 == so 60 == wo) return 'Africa/Algiers'; if (60 == so 120 == wo) return 'Africa/Windhoek'; if (120 == so 60 == wo) return 'Europe/Amsterdam'; if (120 == so 120 == wo) return 'Africa/Harare'; if (180 == so 120 == wo) return 'Europe/Athens'; if (180 == so 180 == wo) return 'Africa/Nairobi'; if (240 == so 180 == wo) return 'Europe/Moscow'; if (240 == so 240 == wo) return 'Asia/Dubai'; if (270 == so 210 == wo) return 'Asia/Tehran'; if (270 == so 270 == wo) return 'Asia/Kabul'; if (300 == so 240 == wo) return 'Asia/Baku'; if (300 == so 300 == wo) return 'Asia/Karachi'; if (330 == so 330 == wo) return 'Asia/Calcutta'; if (345 == so 345 == wo) return 'Asia/Katmandu'; if (360 == so 300 == wo) return 'Asia/Yekaterinburg'; if (360 == so 360 == wo) return 'Asia/Colombo'; if (390 == so 390 == wo) return 'Asia/Rangoon'; if (420 == so 360 == wo) return 'Asia/Almaty'; if (420 == so 420 == wo) return 'Asia/Bangkok'; if (480 == so 420 == wo) return 'Asia/Krasnoyarsk'; if (480 == so 480 == wo) return 'Australia/Perth'; if (540 == so 480 == wo) return 'Asia/Irkutsk'; if (540 == so 540 == wo) return 'Asia/Tokyo'; if (570 == so 570 == wo) return 'Australia/Darwin'; if (570 == so 630 == wo) return 'Australia/Adelaide'; if (600 == so 540 == wo) return 'Asia/Yakutsk'; if (600 == so 600 == wo) return 'Australia/Brisbane'; if (600 == so 660 == wo) return 'Australia/Sydney'; if (630 == so 660 == wo) return 'Australia/Lord_Howe'; if (660 == so 600 == wo) return 'Asia/Vladivostok'; if (660 == so 660 == wo) return 'Pacific/Guadalcanal'; if (690 == so 690 == wo) return 'Pacific/Norfolk'; if (720 == so 660 == wo) return 'Asia/Magadan'; if (720 == so 720 == wo) return 'Pacific/Fiji'; if (720 == so 780 == wo) return 'Pacific/Auckland'; if (765 == so 825 == wo) return 'Pacific/Chatham'; if (780 == so 780 == wo) return 'Pacific/Enderbury'
if (840 == so 840 == wo) return 'Pacific/Kiritimati'; return 'US/Pacific';
}
d=new Date(); //创建一个Date对象
localTime = d.getTime();
localOffset=d.getTimezoneOffset()*60000; //获得当地时间偏移的毫秒数
utc = localTime + localOffset; //utc即GMT时间
offset =10; //以夏威夷时间为例,东10区
gtm= utc + (3600000*offset);
nd = new Date(gtm);
document.writeln("gtm time is " + nd.toLocaleString() ");
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流