【Python基础学习】—时间转换函数

本文聚焦Python时间格式转换,指出Python时间格式多样,转换方法易忘,与PHP不同。因作者常做海外业务,需时区转换,故文章对按时区转换各种时间格式,如字符串与时间戳、字符串与datetime等的转换方法进行了总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值