0

我试图始终获得特定时区的特定时间

例如:Sao Paulo(-3)

我已经尝试过在 stackoverflow 上找到的在此处搜索的代码:

// function to calculate local time
// in a different city
// given the city's 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 Sao Paulo time
Ti.API.info(calcTime('Sao Paulo', '-3'));

在我Ti.API.info()的回答中,我得到了这个:The local time in Sao Paulo is August 6, 2013, 3:31:52 PM GMT-03:00......有一种方法可以得到3:31:52吗?此外......正如这个函数所说......它总是得到当地时间,并且他们显示那个时区的时间......但是有人知道我怎么能总是得到圣保罗的时间而不给出 local time?因此,如果用户在电话上更改他们的时间,它不会更改圣保罗的时间。

谢谢

4

2 回答 2

1

使用 momentjs 特别是 moment timezone

http://momentjs.com/timezone/docs/

如果您使用的是 Alloy,momentjs 默认包含在内,否则您需要下载该库。

于 2013-08-06T20:19:34.663 回答
0

如果您只是在谈论 JavaScript,请查看此答案。然而,我的猜测是 Titanium 有自己的方式将原生 iOS 或 Android 时区 API 映射到 JavaScript。如果没有,它应该。我对钛的了解还不够,无法进一步回答这一点。

请记住,时区不能仅由偏移量表示。请参阅时区标签 wiki中的“时区!= 偏移量” 。

特别是,圣保罗由America/Sao_PauloIANA 时区数据库中的时区表示。该区域在 -3 和 -2 之间交替,如此处所示。您不能简单地传入 -3 并期望它知道该做什么。

于 2013-08-06T18:33:03.270 回答