📜  使用Python获取不同时区的当前时间

📅  最后修改于: 2022-05-13 01:55:34.447000             🧑  作者: Mango

使用Python获取不同时区的当前时间

时区被定义为一个地理区域或地区,在整个地理区域或地区都可以观察到标准时间。它基本上是指一个地区或国家的当地时间。大多数时区与世界时区标准协调世界时 (UTC) 有偏差。
为了获取不同时区的当前时间,我们将使用pytz Python库。

如何获取当前时间?

为了获取本地时间,我们可以使用时间模块。时间模块的一些重要功能

  • localtime() - 它有助于获取当前本地时间
  • strftime(“%H:%M:%S”, t) - 它有助于确定用于显示时间的时间格式

如何获取不同区域的当前时间?

为了获取特定时区的当前时间,需要使用pytz Python库。 pytz 库的一些重要命令是

  • UTC – 有助于获取标准 UTC 时区
  • timezone() - 它有助于获取特定位置的时区
  • now() - 它有助于以默认格式获取日期、时间、UTC 标准
  • astimezone() - 它有助于将特定时区的时间转换为另一个时区

例子:

import time
  
  
curr_time = time.localtime()
curr_clock = time.strftime("%H:%M:%S", curr_time)
  
print(curr_clock)

输出:

11:58:19

我们将获取该地区的当地当前时间和标准UTC时间
例子:

from datetime import datetime
import pytz
  
# get the standard UTC time 
UTC = pytz.utc
  
# it will get the time zone 
# of the specified location
IST = pytz.timezone('Asia/Kolkata')
  
# print the date and time in
# standard format
print("UTC in Default Format : ", 
      datetime.now(UTC))
  
print("IST in Default Format : ", 
      datetime.now(IST))
  
# print the date and time in 
# specified format
datetime_utc = datetime.now(UTC)
print("Date & Time in UTC : ",
      datetime_utc.strftime('%Y:%m:%d %H:%M:%S %Z %z'))
  
datetime_ist = datetime.now(IST)
print("Date & Time in IST : ", 
      datetime_ist.strftime('%Y:%m:%d %H:%M:%S %Z %z'))
Output:
UTC in Default Format :  2020-03-31 07:15:59.640418+00:00
IST in Default Format :  2020-03-31 12:45:59.692642+05:30
Date & Time in UTC :  2020:03:31 07:15:59 UTC+0000
Date & Time in IST :  2020:03:31 12:45:59 IST+0530

比较不同地区时区的UTC和IST格式
例子:

from datetime import datetime
import pytz
  
UTC = pytz.utc
  
timeZ_Kl = pytz.timezone('Asia/Kolkata') 
timeZ_Ny = pytz.timezone('America/New_York')
timeZ_Ma = pytz.timezone('Africa/Maseru')
timeZ_Ce = pytz.timezone('US/Central')
timeZ_At = pytz.timezone('Europe/Athens')
  
dt_Kl = datetime.now(timeZ_Kl)
dt_Ny = datetime.now(timeZ_Ny)
dt_Ma = datetime.now(timeZ_Ma)
dt_Ce = datetime.now(timeZ_Ce)
dt_At = datetime.now(timeZ_At)
  
utc_Kl = dt_Kl.astimezone(UTC)
utc_Ny = dt_Ny.astimezone(UTC)
utc_Ma = dt_Ma.astimezone(UTC)
utc_Ce = dt_Ce.astimezone(UTC)
utc_At = dt_At.astimezone(UTC)
  
print("UTC Format \t\t\t  IST Format")
  
print(utc_Kl.strftime('%Y-%m-%d %H:%M:%S %Z %z'),
      "\t ",
      dt_Kl.strftime('%Y-%m-%d %H:%M:%S %Z %z'))
  
print(utc_Ny.strftime('%Y-%m-%d %H:%M:%S %Z %z'),
      "\t ",
      dt_Kl.strftime('%Y-%m-%d %H:%M:%S %Z %z'))
  
print(utc_Ma.strftime('%Y-%m-%d %H:%M:%S %Z %z'),
      "\t ",
      dt_Kl.strftime('%Y-%m-%d %H:%M:%S %Z %z'))
  
print(utc_Ce.strftime('%Y-%m-%d %H:%M:%S %Z %z'),
      "\t ",
      dt_Kl.strftime('%Y-%m-%d %H:%M:%S %Z %z'))
  
print(utc_At.strftime('%Y-%m-%d %H:%M:%S %Z %z'),
      "\t ",
      dt_Kl.strftime('%Y-%m-%d %H:%M:%S %Z %z'))
Output:
UTC Format               IST Format
2020-03-31 11:21:13 UTC +0000       2020-03-31 16:51:13 IST +0530
2020-03-31 11:21:13 UTC +0000       2020-03-31 16:51:13 IST +0530
2020-03-31 11:21:13 UTC +0000       2020-03-31 16:51:13 IST +0530
2020-03-31 11:21:13 UTC +0000       2020-03-31 16:51:13 IST +0530
2020-03-31 11:21:13 UTC +0000       2020-03-31 16:51:13 IST +0530

因此我们可以得出结论,虽然不同地区有不同的地区时区,但当转换为 UTC 时区时,它们都给出了相同的值。因此我们可以说

  • IST 比 UTC 早 +0530 小时
  • EDT 比 UTC 早 -0400 小时
  • SAST 比 UTC 早 +0200 小时
  • CDT 比 UTC 早 -0500 小时
  • EEST 比 UTC 早 +0300 小时