utc时间转换为太平洋时间
方法一
from datetime import datetime
from pytz import timezone
cst_tz = timezone('Asia/Shanghai')
utc_tz = timezone('UTC')
pst_tz = timezone('America/Los_Angeles')
day = datetime.strptime('2020-12-11 20:00:00', '%Y-%m-%d %H:%M:%S')
aa = day.astimezone(tz=cst_tz).strftime('%Y-%m-%d %H:%M:%S')
bb = day.astimezone(tz=pst_tz).strftime('%Y-%m-%d %H:%M:%S')
cc = day.astimezone(tz=utc_tz).strftime('%Y-%m-%d %H:%M:%S')
print('北京时间:', aa)
print('太平洋时间:', bb)
print('utc时间:', cc)
方法二
import calendar
from datetime import datetime, date, timedelta
MARKETPLACES = {'US': 'NA',
'CA': 'NA',
'JP': 'FE',
'AU': 'FE',
'UK': 'EU',
'FR': 'EU',
'IT': 'EU',
'ES': 'EU',
'DE': 'EU',
'AE': 'EU',
}
def get_weekday(datetime_obj, week_day="monday"):
"""
获取指定时间的当周的星期x
:param datetime_obj: 时间
:param week_day: 指定的星期x
:return:
"""
d = dict(zip(("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"),
range(7))) # datetime 模块中,星期一到星期天对应数字 0 到 6
delta_hour = timedelta(days=1) # 改变幅度为 1 天
while datetime_obj.weekday() != d.get(week_day):
if datetime_obj.weekday() > d.get(week_day):
datetime_obj -= delta_hour
elif datetime_obj.weekday() < d.get(week_day):
datetime_obj += delta_hour
else:
pass
return datetime_obj
def get_month_weekday(year, month, n=1, w="sunday", h=0):
"""
获取 year 年,month 月的的第n个星期w和倒数第n个星期w的日期
:param year: 指定年份,
:param month: 指定月份
:param n: n个或者倒是n个
:param w: 指定的星期w
:param h: 指定的小时
:return:
"""
# 获取第一和最后一天
d = dict(zip(("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"),
range(7))) # datetime 模块中,星期一到星期天对应数字 0 到 6
weekday, count_day = calendar.monthrange(year=year, month=month) # 返回指定月份1号的星期几,和本月的总天数
first_day = datetime(year=year, month=month, day=1, hour=h) # <type 'datetime.datetime'>
last_day = datetime(year=year, month=month, day=count_day, hour=h)
if n > 0:
n = abs(n)
if first_day.weekday() > d.get(w): # 说明本周的星期w在上个月
datetime_obj = first_day + timedelta(weeks=1)
else:
datetime_obj = first_day
datetime_obj += timedelta(weeks=n - 1)
weekday_day = get_weekday(datetime_obj=datetime_obj, week_day=w)
else:
n = abs(n)
if last_day.weekday() < d.get(w): # 说明本周的星期w在下一个月
datetime_obj = last_day - timedelta(weeks=1)
else:
datetime_obj = last_day
datetime_obj -= timedelta(weeks=n - 1)
weekday_day = get_weekday(datetime_obj=datetime_obj, week_day=w)
return weekday_day
def is_dst(dt, region):
"""
"UK","DE","FR","ES","IT" 夏令时 取3月份的最后一个周日凌晨两点和10月份的最后一个星期天的凌晨1点
"US","AU","CA","MX" 夏令时 取3月份的第二个周日凌晨两点和10月份的第一个星期天的凌晨两点
:param dt: utc时间
:return: True:夏令时,Fasle:冬令时
"""
if not isinstance(dt, datetime):
raise ValueError("dt需为dtatime类型")
year = dt.year
if region == ["UK", "DE", "FR", "ES", "IT"]:
summer_start_month = 3
summer_start_n = -1
summer_start_w = "sunday"
summer_start_h = 2
summer_end_month = 10
summer_end_n = -1
summer_end_w = "sunday"
summer_end_h = 1
elif region == ["US", "AU", "CA", "MX"]:
summer_start_month = 3
summer_start_n = 2
summer_start_w = "sunday"
summer_start_h = 2
summer_end_month = 10
summer_end_n = 1
summer_end_w = "sunday"
summer_end_h = 2
else:
raise ValueError(f"不支持当前国家{region}")
sum_start = get_month_weekday(year, summer_start_month, n=summer_start_n, w=summer_start_w, h=summer_start_h)
sum_end = get_month_weekday(year, summer_end_month, n=summer_end_n, w=summer_end_w, h=summer_end_h)
print(sum_start, sum_end)
if sum_start <= dt <= sum_end:
return True
return False
def conversion_time(dt, region="US"):
"""
:param dt: utc时间
:param region: 国家地区
:return: 当地时间
"""
if region in ["US", "AU", "CA", "MX"]:
dt = dt + timedelta(hours=-7) if is_dst(dt, region) else dt + timedelta(hours=-8)
elif region == "UK":
dt = dt + timedelta(hours=1) if is_dst(dt, region) else dt
elif region in ["DE", "FR", "ES", "IT"]:
dt = dt + timedelta(hours=2) if is_dst(dt, region) else dt + timedelta(hours=1)
elif region == "JP":
dt = dt + timedelta(hours=9)
elif region == "IN":
dt = dt + timedelta(hours=5)
elif region == "SG":
dt = dt + timedelta(hours=8)
else:
raise ValueError(f"不支持当前国家{region}")
return dt
if __name__ == '__main__':
# t = datetime(year=2020,month=11,day=19,hour=16)
t = datetime.utcnow()
print(conversion_time(t, region="JP"))
utc时间转换为太平洋时间的更多相关文章
- Python中如何把一个UTC时间转换为本地时间
需求: 将20141126010101格式UTC时间转换为本地时间. 在网上搜了好长时间都没有找到完美的解决方案.有的引用了第三方库,这就需要在现网安装第三方的软件.这个是万万不可的.因为真实环境不一 ...
- UTC时间转换为本地时间
UTC时间转换为本地时间DATEADD(hour, DATEDIFF(hour,GETUTCDATE(),GETDATE()), OrderDate) <'2015-02-02' DECLARE ...
- 【測试工具】一个将Unix时间转换为通用时间的工具
一个将Unix时间转换为通用时间的工具 演示效果: 点击转换之后变为: 源码: function calctime2(){ var time = window.document.getElementB ...
- Python: 处理mongodb文档,怎么让UTC时间转换为本地时间?
存储数据到MongoDB数据库时,一般我们会加一个更新数据的时间update_time.这时在python代码中 会用到datetime模块以便获取当前系统时间,但是存入到MongoDB数据库时,存储 ...
- 转自文翼的博客:将本地时间转换为 GMT 时间
在写 RSS 订阅接口的时候,发现最终输出文章的 RSS 时间(GMT时间),在本地上显示的时间和在服务器上显示的时间不一致. 原因是时区不一致,那么在 JavaScript 中,如何将时间转换为统一 ...
- JavaScript把客户端时间转换为北京时间
写在前面 写了一遍又一遍,网页老卡住,没保存下来,不写了. 时间转换代码 //获得北京时间 Date.prototype.getBJDate = function () { //获得当前运行环境时间 ...
- java GMT时间转换为CST时间
今天在获取windchill的“上次修改时间”的时候发现获取的是GMT时间,但是我们常用的是CST时间 一开始尝试直接设置为CST时区,TimeZone.getTimeZone("CST&q ...
- 将UTC日期字符串转为本地时间字符串,如@"yyyy-MM-dd'T'HH:mm:ssZ"转换为本地时间
由于苹果商店上线应用24小时内会不稳定,更新提醒可能会陷入死循环,更新提醒需要24小时后弹出,需要把苹果返回的上线时间转换为本地时间故写了下边的方法: //将UTC日期字符串转为本地时间字符串//输入 ...
- Python时间获取详解,Django获取时间详解,模板中获取时间详解(navie时间和aware时间)
1.Python获取到的时间 import pytz from datetime import datetime now = datetime.now() # 这个时间为navie时间(自己不知道自己 ...
随机推荐
- java.lang.IllegalStateException: Duplicate key 20
这个我在公司遇到的一个问题.原因:使用Map<String, String> RelationMap = relation.stream().collect(Collectors.toMa ...
- 【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(上)
总是做各种Demo,是时候做个什么小应用来练练手了.踌躇了很久,果然还是搞个小游戏才有意思.想到几年前风靡全球的FlappyBird,一个屏幕一个按钮就足够了,正好适合.OLED屏幕.按键的驱动已经有 ...
- FL Studio CPU面板讲解
在FL Studio中,其CPU面板主要是由CPU使用表.内存使用表和复音数这几个部分组成的.这些对刚接触这款音乐制作软件的同学来说是非常陌生的吧!因为不知道这些是什么,主要的作用是什么.所以小编这里 ...
- guitar pro系列教程(二十二):Guitar Pro在乐谱上的工作【二】
我们在上一篇文章中给大家介绍了Guitar Pro的工作面板和音轨功能,今天我们将会给大家介绍Guitar Pro这款吉他谱学习软件得音频设置面板,在该面板中包含了声卡得选择.MIDI的输入输出及音轨 ...
- FL Studio入门:如何使用Layer插件叠加音色
Layer控制器也是FL Studio中一个特别有用的插件,主要用来叠加音色,以及通过Layer通道来控制多个打击乐通道. 下面我们一起来看看叠加音色是怎么做出来的. 1.新建一个空白工程,插入3个3 ...
- 怎么用Camtasia给视频添加片头片尾
有许多朋友现在喜欢自己拍摄一些小视频,现在不管是在抖音还是在B站,我们看到的大部分视频都有UP主自己制作的片头或片尾.片头做的好,甚至会有人因为片头而关注UP主,能吸引更多的人来观看视频. 所以,如果 ...
- 本地VM安装虚拟机,使用xshell连接
首先把VM设置成上面那样 在ubuntu里面安装ssh apt-get install openssh-server 启动服务 /etc/init.d/ssh startifconfig 查看ip x ...
- centos 7 安装zabbix-4.0
第一步:安装nginx ############安装Nginx###########yum localinstall http://nginx.org/packages/centos/7/noarch ...
- Centos7安装vscode
CentOS7 安装vscode 最近在Linux环境下写几个程序时发现用vim时总出现一点问题,配置了vim也还是不太习惯,因此就安装了vs ...
- C语言讲义——开发工具Dev C++
20世纪60年代,编程语言界发生"结构化程序设计"变革, 丹尼斯·里奇(Dennis Ritchie)& 肯·汤普森(Ken Thompson)发明C语言,率先建立了面向过 ...