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时间(自己不知道自己 ...
随机推荐
- mysql mybatis Date java时间和写入数据库时间不符差一秒问题
1,java的数据库实体定义 private Timestamp createTime:2,非常重要!ddl语句建表字段的单位 datetime要手动设置保留3位毫秒数,不然就四舍五入了! ALTER ...
- [LeetCode题解]160. 相交链表 | 双指针 + 哈希表
方法一:双指针 解题思路 假设链表存在相交时,headA 的长度为 a + c,headB 的长度为 b + c.如果把 headA 连上 headB,headB 连上 headB 的话,当遍历这两个 ...
- PHP+Ajax点击加载更多内容
css样式: <style type="text/css"> #more{margin:10px auto;width: 560px; border: 1px soli ...
- 应用程序-特定 权限设置并未向在应用程序容器不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户...的 COM 服务器应用程序的 本地 激活 权限。此安全权限可以使用组件服务管理工具进行修改。
很久以前发现我们的业务服务器上出现一个System的系统严重错误,查找很久都没有找到解决办法,今日再次查看服务器发现报错更频繁,于是就搜集各种资料进行查找解决办法,终于找到了一个解决办法. 错误截图介 ...
- 使用Camtasia制作蒙面唱将揭面视频
要说之前的<蒙面唱将猜猜猜>还是属于比较火的歌唱综艺节目了.这档歌唱类型的综艺节目的精彩点不在于歌唱的水平,而在于猜想的环节.演唱时,嘉宾们都会蒙上面具,直到被评委猜中时才会揭开面具. 我 ...
- Camtasia中如何自定义视频输出格式
Camtasia Studio是一款功能全面.操作简单的视频录制和编辑软件,它是很多需要进行录屏操作,比如制作教学视频的用户的不错选择.Camtasia 2020还为用户提供了极大的便利的全面的服务, ...
- 和功能相近的虚拟机软件相比,CrossOver的产品优势有哪些?
很多用户其实并不喜欢虚拟机软件,他们只是想用回熟悉的Windows应用程序,因为苹果系统与许多软件并不兼容.无奈之下,他们只能安装虚拟机软件.可是虚拟机软件大多比较笨重并且也相对复杂一些,在后期维护上 ...
- 5w 字 | 172 图 | 超级赛亚级 Spring Cloud 实战
一.PassJava 项目简介 PassJava-Learning 项目是 PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款 Java 面试刷题 的 ...
- Matlab 画图1
plot函数 plot最简单的是plot(x,y),其中,x,y是一组数据 如果要画出\(y=x^2\)的图像 在Command Window中输入 x =[1 2 3]; y =[4 5 6]; p ...
- flink:StreamExecutionEnvironment、DataStream和Transformation与StreamOperator
1.StreamExecutionEnvironment: StreamExecutionEnvironment是构建执行任务环境以及任务的启动的入口,主要具备以下几方面的职责: a.存储全局相关的参 ...