以格式化的日期时间字符串显示时区名称

时间:2019-04-09 11:25:29

标签: python datetime

我想为本地计算机打印带有时区名称的当前日期和时间。但是,我似乎看不到最后一点

In [1]: from datetime import datetime

In [2]: print(datetime.now().strftime('%d %b %Y %H:%M:%S'))
09 Apr 2019 13:23:47

In [3]: print(datetime.now().strftime('%d %b %Y %H:%M:%S %Z'))
09 Apr 2019 13:23:52

我希望看到我的PC的时区名称('CET')已添加到第二个字符串中。我如何获得:

09 Apr 2019 13:23:52 CET

2 个答案:

答案 0 :(得分:1)

这是因为app.UseExceptionHandler(a => a.Run(async context => { var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>(); var exception = exceptionHandlerPathFeature.Error; var result = JsonConvert.SerializeObject(new { error = exception.Message }); context.Response.ContentType = "application/json"; await context.Response.WriteAsync(result); })); 的默认datetime.now参数是tz

如何指定时区的示例:

None

吐出from pytz import UTC datetime.now(tz=UTC).strftime("%Z")

如果要获取当前时区,则:

UTC

在我的情况下为import time time.strftime("%Z", time.gmtime())

答案 1 :(得分:1)

基本上,如果您想使用time库来获取系统的时区信息。

>>> import time
>>> time.tzname
('IST', 'IST')

在我的情况下,时区为IST

更新 如果您只想使用datetime模块,则可以采用一种怪异的方式,但绝对不建议这样做。此answer中提到了解决方案。但是同样的问题是,这不是充分的证据,假设您对印度和斯里兰卡这两个国家具有相同的时区差异,那么由于IST和SLST均为GMT + 5:30,它将无法识别出正确的时区