将输入的时间(即PDT / PST)转换为本地时间

时间:2019-05-30 12:32:24

标签: javascript

到目前为止,我已经为PST,CST,EST,GMT,CEST,IST和AST创建了一个时区列表,该列表非常有效。但是我还想添加一个始终为PST的输入框,并从中输出本地时间。

即如果用户输入09:00,那么如果他们居住在英国,则将输出17:00 因此,它基本上会注册您相对于时区的位置,并从输入的时间中添加(或减去)。 (英国为+8,因此输入+ 8为输出)

这是我现在所在的地方

https://jsfiddle.net/wayneker/unc7e64f/16/

尽管我知道此演示非常理想,但我知道(根据我目前的知识)我目前无法做到这一点。

https://greenwichmeantime.com/time/to/pst-local/

我已经研究了各种页面,但其中的很多内容却无法理解。但是我所看到的通常是PST本地的

window.setInterval(function(){

// function to calculate local time
// in a different city
// given the city's UTC offset
function calcTime(offset) {
//function calcTime(city, offset) {

// create Date object for current location
d = new Date();

//set options
var options = { weekday: "short", year: "numeric", month: "short",
               day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"  };

// 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();
//return nd.toLocaleString();
return nd.toLocaleString("en-US", options);

}

Date.prototype.stdTimezoneOffset = function() {
var jan = new Date(this.getFullYear(), 0, 1);
var jul = new Date(this.getFullYear(), 6, 1);
return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}
Date.prototype.dst = function() {
return this.getTimezoneOffset() < this.stdTimezoneOffset();
}
var today = new Date();
if (today.dst()) document.getElementById('dst').innerHTML = '';

1 个答案:

答案 0 :(得分:1)

这里是将PST时间转换回UTC,然后应用本地偏移量的一种方法。

function submitfunction() {

var value = document.getElementById("PSTPDT").value;

var parts = value.split(':');
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth();
var date = now.getDate();
var offset = now.getTimezoneOffset()

var local = new Date(year, month, date, parts[0], parts[1], parts[2]);
local.setMinutes(local.getMinutes() + 420 - offset);

var result = document.getElementById("result");
result.innerHTML = local
}

请参阅示例: https://jsfiddle.net/p9u5j8dm/