【问题标题】:Question about TimeZones and Jquery CountDown plugin关于 TimeZones 和 Jquery CountDown 插件的问题
【发布时间】:2009-09-16 18:17:05
【问题描述】:

我正在寻找使用这个插件:http://keith-wood.name/countdown.html

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

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

所以 +10 是 TimeOffSet 数字。现在我需要这样做,以便我可以执行 jquery get 请求并从服务器获取 TimeOffSet(它从数据库获取用户时间并执行 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 只给我数字而不是 +/- 符号。所以我不知道如何获得它。

编辑 -

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

【问题讨论】:

  • int totalMins = (小时 * 60) + 分钟;如果小时数为负数,这将不起作用。您也必须对分钟应用相同的符号。试试: int totalMins = (hours * 60) + mins * Math.Sign(hours);

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


【解决方案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, ...

【讨论】:

  • 有没有人建议更快地将 tz 字符串转换为分钟?确保将“08”视为无效的八进制文字。
  • 它也有一些 UTC 如果我没记错的话,C# TimeZoneInfo 使用的是什么?
  • 嗯我什至不明白这是在做什么。我不太擅长 javascript。
  • 我也可能会在 C# 中完成这一切并发送最终数字。无论如何我都必须做一个 ajax 请求,所以不妨使用 C# 来发送最终结果,而不仅仅是一个我必须转换以获得所需内容的数字。
  • 是的!在 C# 中转换为分钟会更好!
猜你喜欢
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
相关资源
最近更新 更多