我正在努力让事情变得非常简单,而且人们之前已经把这一切都搞定了:
我有一个日期字符串(来自Facebook API),看起来像2015-09-08T19:05:00-0400
。
我想使用moment.calendar
格式化此字符串以及时区缩写。像“明天美国东部时间晚上7点”。现在它说“明天下午4点”,因为我在太平洋标准时间。
事实证明这是一个具有挑战性的问题。似乎只要time = moment("2015-09-08T19:05:00-0400")
time
,cities = {'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位数字并自己添加缩写,但那是一个完整的黑客攻击。当然必须有更好的方法来做到这一点。也就是说,似乎有很多关于此的骚动。我错过了什么吗?
答案 0 :(得分:0)
使用parseZone
函数会使得moment
对象保留所提供的偏移量,而不是使用本地时区。
moment.parseZone("2015-09-08T19:05:00-0400").calendar()
您还要求它返回时区缩写"EST"
,但这是不可能的。人们不能假设偏移属于特定时区,因为偏移可能被几个不同的时区使用,每个时区都有不同的缩写。