钛 - 我怎样才能始终获得特定时区并只获得时间?

时间:2013-08-06 16:48:34

标签: android ios time timezone titanium

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

例如: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?因此,如果用户在手机上更改时间,则不会改变圣保罗的时间。

由于

2 个答案:

答案 0 :(得分:1)

使用momentjs特定时刻时区

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

如果你使用Alloy,默认包含momentjs,否则你需要下载库。

答案 1 :(得分:0)

如果您只是在谈论JavaScript,请参阅this answer。但是,我的猜测是Titanium有自己的方式将原生iOS或Android时区API映射到JavaScript。如果没有,它应该。我不太了解Titanium在这一点上进一步回答。

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

特别是,圣保罗由IANA时区数据库中的America/Sao_Paulo时区代表。该区域在-3和-2之间交替变换,如here所示。你不能简单地传入-3并期望它知道该怎么做。