Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang kaedah penukaran masa UTC JavaScript_kemahiran javascript

Penjelasan terperinci tentang kaedah penukaran masa UTC JavaScript_kemahiran javascript

WBOY
WBOYasal
2016-05-16 15:21:212541semak imbas

1 1. UTC: Masa Sejagat Selaras, masa sejagat selaras. 2. Greenwich Mean Time (GMT)
Greenwich Mean Time (GMT) merujuk kepada masa standard di Balai Cerap Diraja Greenwich di pinggir bandar London, kerana meridian utama ditakrifkan sebagai longitud yang melaluinya. Secara teorinya, tengah hari di Greenwich Mean Time ialah apabila matahari melintasi meridian Greenwich. Disebabkan oleh pergerakan tidak sekata Bumi dalam orbit elipsnya, masa ini mungkin berbeza daripada masa suria sebenar sebanyak 16 minit. Putaran harian Bumi agak tidak teratur dan perlahan-lahan menjadi perlahan. Oleh itu, GMT tidak lagi digunakan sebagai masa standard. Waktu piawai hari ini - Waktu Sejagat Selaras (UTC) - disediakan oleh jam atom. Sejak 5 Februari 1924, Balai Cerap Greenwich telah menghantar maklumat pelarasan masa kepada dunia setiap jam. UTC adalah berdasarkan masa tepat yang disediakan oleh GMT standard.
GMT (Greenwich Mean Time) - Greenwich Mean Time ialah masa rujukan Empayar British pada pertengahan abad ke-19 dan juga merupakan masa rujukan dunia secara de facto. Pada masa itu ia berfungsi terutamanya sistem kereta api selepas 1840. Ia menggunakan longitud Balai Cerap Greenwich sebagai longitud 0 darjah dan membahagikan dunia kepada 24 zon waktu Kecuali dipengaruhi oleh xenofobia, nasionalisme dan beberapa sentimen anti-British pada masa tertentu, statusnya tidak pernah goyah.

Perbezaan antara GMT dan UTC Jam tangan GMT ialah jam tangan yang boleh memaparkan masa dalam dua atau lebih zon waktu. Tidak kira kaedah yang digunakan, cara paling langsung untuk memaparkan berbilang zon waktu ialah memasang berbilang pergerakan dalam satu bekas jam. Walau bagaimanapun, kaedah yang paling menjimatkan dan biasa ialah memasang bezel berputar dengan skala masa 12 jam atau 24 jam. Kaedah menggunakan bezel berputar adalah sangat mudah. ​​Hanya selaraskan nombor pada bezel yang sepadan dengan waktu zon waktu kedua dengan jarum jam dail Jika masa dail ialah waktu London, kemudian pusingkan bezel mengikut arah jam selama satu jam menunjukkan waktu Eropah benua , pusingkan lawan jam lapan jam, iaitu Waktu Pantai Barat Amerika Syarikat. Sama ada masa dail ditetapkan kepada masa rumah atau masa destinasi bergantung pada pilihan pengguna, tetapi memandangkan jam tangan 12 jam tidak dapat membezakan antara siang dan malam, biasanya lebih munasabah untuk menetapkan waktu tempatan. Satu peristiwa berlaku yang merumitkan takrifan GMT: pada 1 Januari 1972, UTC (Waktu Sejagat Selaras) menjadi masa piawai sejagat baharu.
Untuk kemudahan, ia biasanya direkodkan sebagai Universal Time Coordinated. Juga untuk kemudahan, GMT dan UTC sering dianggap setara apabila ketepatan kepada detik tidak diperlukan. Walaupun UTC lebih saintifik dan tepat, GMT masih lebih popular di kalangan pemain dan pengumpul jam tangan. Ramai orang percaya bahawa UTC adalah cara untuk Paris berusaha untuk menjadi pusat masa dunia. Malah, ia adalah sistem pengukuran masa berdasarkan masa atom dan sedekat mungkin dengan masa sejagat. Kemunculannya adalah keperluan untuk masa yang tepat dalam masyarakat moden.
Masa atom adalah berbeza daripada sistem pemasaan sebelumnya Ia sangat tepat dan tidak berdasarkan purata masa suria sesuatu tempat Namun, apabila kelajuan putaran bumi tidak sekata, perbezaan masa antara masa atom dan masa sejagat terkumpul dari semasa ke semasa. Oleh itu, UTC akan berada dalam Positif atau saat lompat negatif ditambah selepas tempoh masa untuk mengimbangi. Oleh itu akan terdapat beberapa perbezaan saat keseluruhan antara Waktu Sejagat Selaras dan Waktu Atom Antarabangsa (TAI). Biro Pusat Antarabangsa untuk Hal Ehwal Putaran Bumi (IERS) di Paris bertanggungjawab untuk menentukan masa untuk memasukkan detik lompat.

Waktu Beijing ialah 8 zon waktu berbeza daripada Waktu Greenwich atau waktu UTC Beijing, Shanghai dan Chongqing terletak di zon timur ke-8, jadi waktu Beijing 2013-1-1 0:00:00, ditukar kepada waktu UTC. : Sel Jan 1 00 :00:00 UTC 0800 2013, 8 jam kemudian.

2. Penukaran dari waktu tempatan ke waktu UTC
Penukaran dari waktu tempatan ke waktu UTC, langkah-langkahnya adalah seperti berikut:

1. Tukar tarikh rentetan kepada jenis data tarikh
Jika ia sudah menjadi jenis tarikh, anda boleh meninggalkan langkah ini.
Boleh ditukar menggunakan fungsi dalam contoh di bawah.


2. Dapatkan data tarikh UTC
Termasuk tahun, bulan, hari, jam, minit dan saat, gunakan kaedah getUTC***() untuk mendapatkan.
Dapatkan tahun: var y = date.getUTCFulYear(); Dapatkan bulan: var m = date.getUTCMonth();

Dapatkan tarikh: var d = date.getUTCDate();

Dapatkan jam: var h= date.getUTCHours();
Dapatkan minit: var M = date.getUTCMinutes();
Dapatkan saat: var s = date.getUTCSeconds();

Tarikh di sini ialah data jenis tarikh.

Nota: Terdapat masalah menggunakan kaedah tanpa UTC di sini (contohnya: date.getFullYear, date.getMonth Apabila melakukan penukaran seterusnya, ralat hasil akan berlaku).

3. Gunakan fungsi Date.UTC() untuk menukar

Tukar data tarikh yang diperoleh dalam langkah 2 kepada masa UTC (sebenarnya milisaat sejak 1700)
var utc = Tarikh.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年以来的毫秒数表示的长数字。

以上就是本文的全部内容,希望对大家的学习有所帮助。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn