Momentjs:格式化日期与时区?

时间:2015-09-08 04:21:45

标签: date datetime timezone

我正在努力让事情变得非常简单,而且人们之前已经把这一切都搞定了:

我有一个日期字符串(来自Facebook API),看起来像2015-09-08T19:05:00-0400

我想使用moment.calendar格式化此字符串以及时区缩写。像“明天美国东部时间晚上7点”。现在它说“明天下午4点”,因为我在太平洋标准时间。

事实证明这是一个具有挑战性的问题。似乎只要time = moment("2015-09-08T19:05:00-0400") timecities = {'CA': 'San Francisco', 'MI': 'Detroit', 'FL': 'Jacksonville'} cities['NY'] = 'New York' cities['OR'] = 'Portland' def find_city(themap, state): if state in themap: return themap[state] else: return "Not found." cities['_find'] = find_city while True: print "State? (Enter to quit)" state = raw_input(">") #This is the line I have question for if not state: break city_found = cities['_find'](cities, state) print city_found 就会丢失所有时区信息,因为日期会立即转换为我当地的时区。

我不想使用时刻时区,因为这个用例看起来非常简单。我正在考虑手动解析最后5位数字并自己添加缩写,但那是一个完整的黑客攻击。当然必须有更好的方法来做到这一点。也就是说,似乎有很多关于此的骚动。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

使用parseZone函数会使得moment对象保留所提供的偏移量,而不是使用本地时区。

moment.parseZone("2015-09-08T19:05:00-0400").calendar()

您还要求它返回时区缩写"EST",但这是不可能的。人们不能假设偏移属于特定时区,因为偏移可能被几个不同的时区使用,每个时区都有不同的缩写。