使用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 小时