关于TimeZones和Jquery CountDown插件的问题

时间:2009-09-16 18:17:06

标签: c# .net asp.net javascript jquery

我希望使用此插件:http://keith-wood.name/countdown.html

但我需要使用它的TimeZone功能。所以我在查看示例代码

$('#sydneyCountdown').countdown({until: liftoffTime, timezone: +10});

所以+10是TimeOffSet编号。现在我需要这样做,以便我可以执行jquery get请求并从服务器获取TimeOffSet(从db获取用户时间并执行TimeOffSet)。

然而,似乎C#TimeOffSet返回类似“+02:00”的内容(这不是一个与jquery示例中的随机区域不同的随机区域)。

所以看起来所有的C#TimeOffSet都遵循这种格式+/- xx:xx

所以我不明白为什么jquery插件只有2个挖掘而另一个是4位数。

我能否知道C#中的最后2位数字是否与插件格式匹配?

编辑 - 这会有用吗?

            // working on how to get offsetTime will be posted soon.
            string time = "-08:30";      
            string[] split = new string[] {":"};
            string[] splited = time.Split(split, StringSplitOptions.RemoveEmptyEntries);
            int hours = Convert.ToInt32(splited[0]);
            int mins = Convert.ToInt32(splited[1]);
            int totalMins = (hours * 60) + mins;

那么只需将小时数转换为分钟,然后将分钟添加到它?

编辑 - 使用offSetTime

   var info = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
    TimeSpan span  = info.BaseUtcOffset;
    string time = Convert.ToString(span);
    string[] split = new string[] {":"};
    string[] splited = time.Split(split, StringSplitOptions.RemoveEmptyEntries);
    int hours = Convert.ToInt32(splited[0]);
    int mins = Convert.ToInt32(splited[1]);
    int totalMins = (hours * 60) + mins;

问题虽然OffSet只给我数字而不是+/-符号。所以我不知道如何得到它。

编辑 -

没关系我有意义的是他们没有添加加号,因为我只是测试了一个带有“ - ”符号的符号并显示出来。

1 个答案:

答案 0 :(得分:1)

该插件说:

  

适应时区的时区   设置,设置为目标   时间偏离GMT,两者之一   小时或分钟。

所以,我认为根据时区值的大小,它将其视为小时或分钟。您应该将<sign><hh>:<mm>格式转换为分钟数,以考虑非小时对齐的时区。类似的东西:

var tz = "-08:30";
var tz_tokens = /([+\-])0?(\d+):(\d+)/.exec(tz);
var tz_minutes = (tz_tokens[1] + 1) * (tz_tokens[2] * 60 + tz_tokens[3]);

// ..., timezone: tz_minutes, ...