如何使用momentjs在angularjs中设置应用程序范围的时区

时间:2018-02-20 12:13:09

标签: javascript angularjs timezone momentjs

我有一个服务器在一个时区存储时间戳,而用户存在另一个时区。我的印象是gem充当了 装饰器 ,如果我定义了时区

var date = moment(timestamp_from_server).calendar()

然后随后使用时刻函数将使用时区定义

app.run(function(...) {
  ...
  moment.tz.setDefault("Europe/Copenhagen")
})

在我的情况下,为所有时间戳添加一小时。但显然这不起作用。

是否可以设置"全球"或应用程序范围的时区,所以我不必转换代码中的每个时间戳,只能依赖momentjs方法?任何建议,也是备选方案,我们非常感谢。

注意:我正在使用AngularJS,在

中设置时区
import binascii
from Crypto.Cipher import AES
from Crypto import Random

def encrypt(passwrd, message):
    msglist = []
    key = bytes(passwrd, "utf-8")
    iv = Random.new().read(AES.block_size)
    cipher = AES.new(key, AES.MODE_CFB, iv)
    msg = iv + cipher.encrypt(bytes(message, "utf-8"))
    msg = binascii.hexlify(msg)
    for letter in str(msg):
        msglist.append(letter)
    msglist.remove("b")
    msglist.remove("'")
    msglist.remove("'")
    for letter in msglist:
        print(letter, end="")
    print("")

def decrypt(passwrd, message):
    msglist = []
    key = bytes(passwrd, "utf-8")
    iv = Random.new().read(AES.block_size)
    cipher = AES.new(key, AES.MODE_CFB, iv)
    msg = cipher.decrypt(binascii.unhexlify(bytes(message, "utf-8")))[len(iv):]
    for letter in str(msg):
        msglist.append(letter)
    msglist.remove("b")
    msglist.remove("'")
    msglist.remove("'")
    for letter in msglist:
        print(letter, end="")
    print("")

但我认为没有任何重要性。

1 个答案:

答案 0 :(得分:1)

您可以使用angular moment

实现此目的

如果您不想使用此模块

  1. 您可以为momentjs创建工厂或服务,并使用依赖注入在应用程序的任何位置使用
  2. 创建一个设置默认时区的装饰器,这将有助于整个应用程序中的一致时区。
  3. 根据评论更新:

    如果从头开始新项目,可能更容易使用angular moment 另外,decoratorapp.runsetting in service本身就是非常大的。但是在现有项目中应用时区时,请确保时区中的更改不会影响使用momentjs的现有日期函数

    使用工厂

    设置默认时区的简单实现

    由于工厂是单件,因此只会创建一个

    https://embed.plnkr.co/wmv11KEuJt6XJvgs5eY8/