python的时间格式分为多种,几种格式之间的转换方法时常是我们遇到的而且是经常忘记的点,python不像php,时间字符串和datetime是一起的,只需要strtotime和date函数就可以相互转化。虽然网上已经有很多python时间转换的文章,但是由于作者本人经常做海外业务,需要各种时区之间的转换,所以这篇文章会对按时区转换各种时间格式做一个总结。
一、字符串转时间戳
1、默认:
import time
def time_str_to_timestamp(string_time, _format="%Y-%m-%d %H:%M:%S"):
return int(time.mktime(time.strptime(string_time, _format)))
2、按时区转:
import time
import datetime
from pytz import timezone as tz
def time_str_to_timestamp_by_timezone(string_time, _format="%Y-%m-%d %H:%M:%S”, from_tz=“UTC”, to_tz="America/Los_Angeles"):
from_tz = tz(from_tz)
to_tz = tz(to_tz)
return int(time.mktime(
datetime.datetime.strptime(string_time, _format).replace(
tzinfo=from_tz).astimezone(to_tz).timetuple()))
二、时间戳转字符串
1、默认:
import time
def timestamp_to_str(timestamp, _format="%Y-%m-%d %H:%M:%S"):
return time.strftime(_format, time.localtime(timestamp))
2、按时区转:
import datetime
from pytz import timezone as tz
def timestamp_to_str_by_timezone(timestamp, _format="%Y-%m-%d %H:%M:%S”, to_tz="America/Los_Angeles"):
to_tz = tz(to_tz)
return str(datetime.datetime.fromtimestamp(timestamp, to_tz).strftime(_format))
三、字符串转datetime
1、默认:
import datetime
def datetime_str_to_datetime(string_time, _format="%Y-%m-%d %H:%M:%S"):
return datetime.datetime.strptime(string_time, _format)
2、按时区转:
import datetime
from pytz import timezone as tz
def datetime_str_to_datetime_by_timezone(string_time, from_tz=“UTC”, to_tz="America/Los_Angeles”, _format="%Y-%m-%d %H:%M:%S",):
from_tz = tz(from_tz)
to_tz = tz(to_tz)
return datetime.datetime.strptime(string_time, _format).replace(
tzinfo=from_tz).astimezone(to_tz)
四、datetime转字符串
1、默认:
import datetime
def datetime_to_datetime_str(date, _format="%Y-%m-%d %H:%M:%S"):
return date.strftime(_format)
2、按时区转:
import datetime
from pytz import timezone as tz
def datetime_to_datetime_str_by_timezone(date, from_tz=“UTC”, to_tz="America/Los_Angeles”, _format="%Y-%m-%d %H:%M:%S"):
from_tz = tz(from_tz)
to_tz = tz(to_tz)
date = date.replace(tzinfo=from_tz).astimezone(to_tz)
return date.strftime(_format)
五、datetime转时间戳
1、默认:
import time
def datetime_to_timestamp(date):
return int(time.mktime(date.timetuple()))
2、按时区转:
import time
from pytz import timezone as tz
def datetime_to_timestamp_by_timezone(date, from_tz=“UTC”, to_tz="America/Los_Angeles"):
from_tz = tz(from_tz)
to_tz = tz(to_tz)
return int(time.mktime(date.replace(
tzinfo=from_tz).astimezone(to_tz).timetuple()))
六、时间戳转datetime
1、默认:
import datetime
def timestamp_to_datetime(time_stamp):
return datetime.datetime.fromtimestamp(time_stamp)
2、按时区转:
import datetime
from pytz import timezone as tz
def timestamp_to_datetime_by_timezone(time_stamp, to_tz="America/Los_Angeles"):
to_tz = tz(to_tz)
return datetime.datetime.fromtimestamp(time_stamp, to_tz)