设置LocalTime joda

时间:2015-06-11 16:33:31

标签: jodatime localtime

如何在joda的LocalTime中设置所需的时区?所需时区 - 莫斯科。 默认构造函数new LocalTime()为我显示了其他时间:它显示时间,比我的时区提前一小时。

2 个答案:

答案 0 :(得分:2)

LocalTime 时区。这就是它的全部意义。

如果您想要特定时区内特定时刻的LocalTime,则可以使用DateTime然后使用toLocalTime

DateTime now = new DateTime(zone); // Urgh: see below
LocalTime localNow = now.toLocalTime();

请注意,我强烈建议使用表示时钟的依赖项来提供当前时刻" - 然后你可以使用"系统"实现通过System.currentTimeMillis等返回当前时间,但您也可以 使用"测试"实现返回预定义的时间,允许您在任何时刻编写单元测试。

有了这样的依赖关系,你可能会有类似的东西:

DateTime now = new DateTime(clock.getCurrentInstant(), zone);
LocalTime localNow = now.toLocalTime();

答案 1 :(得分:1)

Jon Skeets建议注射时钟是好的和好的。否则 - 并且更接近您的问题 - 您应该使用LocalTime DateTimeZone接受LocalTime time = new LocalTime(DateTimeZone.forID("Europe/Moscow")); - 参数,以便不依赖于您的系统时区,这可能不是您想要的:< / p>

System.currentTimeMillis()

它是如何运作的?

首先,Joda-Time通过import boto from boto.s3.key import Key import requests #setup the bucket c = boto.connect_s3(your_s3_key, your_s3_key_secret) b = c.get_bucket(bucket, validate=False) #download the file url = "http://en.wikipedia.org/static/images/project-logos/enwiki.png" r = requests.get(url) if r.status_code == 200: #upload the file k = Key(b) k.key = "image1.png" k.content_type = r.headers['content-type'] k.set_contents_from_string(r.content) 使用标准系统时钟并获取全局时间戳。为了得出当地时间部分,Joda-Time必须知道时区参考。这就是你在这里定义的。该区域仅用于转换,没有别的。在构建新的本地时间(没有关于时区的内部知识)之后,Joda-Time不再需要记录的区域参考。

<强>更新

如果您的系统时区已经是“Europe / Moscow”(没有args的构造函数使用系统tz!),您应该检查您的Joda-Time版本。也许你已经过时了包含旧dst规则的时区数据。下载最新版本的v2.8可能有助于防止旧数据。