
I. 简介
1,UTC: 协调世界时,协调世界时.
2. 格林威治标准时间(GMT)
格林威治标准时间(GMT)是指伦敦郊区格林威治天文台的标准时间,因为本初子午线被定义为经过那里的子午线. 理论上,格林威治标准时间的正午是指太阳穿过格林威治子午线的时间. 由于地球在椭圆轨道上运动的速度不均匀,因此该时刻可能与实际太阳时间相差16分钟. 地球的日常自转有些不规律,并且正在缓慢地减速. 因此,格林威治标准时间不再用作标准时间. 当前标准时间-协调世界时(UTC)-由原子钟提供. 自1924年2月5日起,格林威治天文台将每小时向世界发送计时信息. UTC基于标准GMT提供的确切时间.
GMT(格林威治标准时间)-格林威治标准时间,格林威治标准时间是19世纪中叶大英帝国的基准时间,也是事实上的世界基准时间. 当时主要用于1840年以后的铁路系统. 它使用格林威治天文台的经度为0度,将世界划分为24个时区. 除了在特定时期内受到仇外心理,民族主义和某些反英情绪的影响外,其地位从未动摇过.
GMT和UTC之间的区别
GMT手表是可以显示两个或更多时区的时间的手表. 无论使用哪种方法,显示多个时区的最直接方法是在一种情况下安装多个机芯. 但是,最经济utc时间转换工具,最常用的方法是安装12个小时或24个小时时间刻度的旋转表圈. 使用旋转挡板的方法非常简单. 只需将表圈第二时区中与时间相对应的数字与表盘的时针对准即可. 如果拨号时间是伦敦时间,则将表圈顺时针旋转一小时,指示欧洲大陆时间,将表圈逆时针旋转八小时,这是美国的西海岸时间.
将拨号时间设置为本地时间还是目的地时间取决于用户的偏好,但是由于12小时制无法区分白天和晚上,因此通常更合理的方法是设置本地时间. 一件使GMT定义复杂化的事件: 1972年1月1日,UTC(世界标准时间)成为新的世界标准时间.

为方便起见,通常将其写为世界标准时间. 此外,为方便起见,一般来说,格林尼治标准时间(GMT)和UTC不需要精确到秒时,它们通常被视为等同. 尽管UTC更科学,更精确,但GMT在钟表手和收藏家中仍然更受欢迎. 许认为,UTC是巴黎掌握全球计时中心地位的一种手段. 实际上,这是一个基于原子时间并尽可能接近世界通用时间的时间测量系统. 它的出现是现代社会对精确时间的需求.
原子时间与以前的计时系统不同. 它非常准确,并且不使用某个地方的平均太阳时间作为参考. 然而,当地球的旋转速度不均匀时,原子时间与世界时间之间的时间差就会累积. 因此,UTC将在一段时间后增加正或负leap秒以进行补偿. 因此utc时间转换工具,协调世界时和国际原子时(TAI)之间将相差几整数秒. 巴黎国际地球自转局(IERS)负责决定何时加入the秒.
北京时间和格林威治标准时间或UTC时间相差8个时区. 北京,上海和重庆位于东部第8区,因此将北京时间2013-1-1 0:00:00转换为UTC时间是: 周二1月1 00: 00: 00 UTC + 0800 2013,已经过去了8个小时.
第二,将本地时间转换为UTC时间
从本地时间到UTC时间的转换如下:
1. 将字符串日期转换为日期数据类型
如果它已经是日期类型,则可以省略此步骤.
使用以下示例中的函数进行转换.

2. 获取UTC日期数据
包括年,月,日,小时,分钟和秒,请使用getUTC ***()方法获取.
获取年份: var y = date.getUTCFullYear();
获取月份: var m = date.getUTCMonth();
获取日期: var d = date.getUTCDate();
获取小时: var h = date.getUTCHours();
获取分钟数: var M = date.getUTCMinutes();
获取秒数: var s = date.getUTCSeconds();

这里的日期是日期类型数据.
注意: 使用不带UTC的方法(例如: date.getFullYear,date.getMonth)是有问题的,执行下一次转换时结果将是错误的.
3. 使用Date.UTC()函数进行转换
将在第2步中获得的日期数据转换为UTC时间(实际上是自1700年以来的毫秒数)
var utc = Date.UTC(y,m,d,h,M,s);
此处,y,m,d,h,M和s分别表示在步骤2中获得的年,月,日,时,分和秒值.
三,UTC日期到本地日期的转换
UTC日期到本地日期的转换要简单得多,首先将UTC时间转换为日期格式,然后转换为本地日期格式,例如:

var date2 = new Date(utc); var localeString = date2.toLocaleString();
或者只是日期
var localeDateString = date2.toLocaleDateString();
或者只是时间
var localeTimeString = date2.toLocaleTimeString();
示例:
//日期加减计算
function dateadd(sdate, delta, ymdh){
if(!sdate ) return;
if(typeof sdate == 'object') sdate = sdate.toLocaleString();
/(\d{4})[\D](\d{1,2})[\D](\d{1,2})[\D]\s(\d{1,2}):(\d{1,2}):(\d{1,2})/.exec(sdate);
var a = [0,0,0,0];
switch(ymdh){
case 'y':
a = [delta, -1, 0, 0];
break;
case 'm':
a=[0, delta-1, 0, 0];
break;
case 'H':
a=[0, -1, 0, delta];
break;
default:
a = [0, -1, delta, 0];
break;
}
println('date:' + (parseInt(RegExp.$1)+ a[0]) + '-'+ (parseInt(RegExp.$2)+a[1]) +'-' + (parseInt(RegExp.$3)+a[2])
+ ' ' + (parseInt(RegExp.$4)+a[3]) +':' + RegExp.$5 + ':' +RegExp.$6);
return new Date(parseInt(RegExp.$1)+ a[0], parseInt(RegExp.$2)+a[1], parseInt(RegExp.$3)+a[2], parseInt(RegExp.$4)+a[3], RegExp.$5,RegExp.$6);
}
//UTC转换
println('---------------------------------------------');
var sdate='2013-01-01 00:00:00.0';
var d = dateadd(sdate,0);
var d2 = Date.UTC(d.getUTCFullYear(),d.getUTCMonth() ,d.getUTCDate(),d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds());
println('原日期:' + sdate);
println('d2:' + d2);
println('d3:' + new Date(d2));
println('d4:' + new Date(d2).toLocaleString());
println('d5:' + d2.toLocaleString());
测试结果:
--------------------------------------------- date:2013-0-1 0:00:00 原日期:2013-01-01 00:00:00.0 d2:1356969600000 d3:Tue Jan 1 00:00:00 UTC+0800 2013 d4:2013年1月1日 0:00:00 d5:1,356,969,600,000.00
您可以看到UTC时间实际上是从1970年以来的毫秒数.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-262929-1.html
说不好的要么不是苹果用户或者机器太老
也不能再拖了
教授本是代表了文化