Advertisement

Python时间戳与时间的相互转换

阅读量:

当使用Python进行数据处理时,在某些情况下可能需要将时间和其对应的 timestamp 之间互相转换;或者反之亦然地将一个 timestamp 转换为实际的时间数值。这里提供了一种方法来实现这两种操作之间的互相转换;通常,在解决 Python 时间相关问题时会采用 time 和 datetime 两个标准库作为主要工具。

时间戳与时间的相互转换

        • 时间戳转换成时间
      • strftime()方法语法:
      • strptime()方法语法:
  • 将时间字段转为时间段戳表示。

  • 将datetime对象转为字符串形式。

  • 将字符串解析为datetime对象。

  • 补充说明如何处理不同类型的时区时间。


  • 将日期字段转为时间段戳表示。

  • 补充说明如何处理月份名称(如March)。

  • 补充说明如何处理年份部分(如"Mar")。

  • 补充说明如何处理小时部分(如"PO")。

  • 补充说明如何处理分钟部分(如"PO")。

  • 将日期字符串解析为datetime对象的具体操作步骤。

  • 补充说明如何获取前一天的时间的具体操作步骤。

    复制代码
    * 时间字段说明
时间戳转换成时间

该Python built-in函数time.strftime()接受一个时间元组,并生成一个用可读字符串表示的当地时间;其输出格式由参数format指定。

strftime()方法语法:
复制代码
    time.strftime(format[, t])      #format -- 格式字符串。t -- 可选的参数t是一个struct_time对象。
    
    
    
      
      
    
    代码解释

Python time strptime() 函数遵循指定格式将一个时间字符串解析为时间元组。

strptime()方法语法:
复制代码
    time.strptime(string[, format])    #string -- 时间字符串。 format -- 格式化字符串。
    
    
      
    
    代码解释
复制代码
    import time
    
    date = '03/20/2020'          #"2020年3月20日"
    date1=time.strptime(date,'%m/%d/%Y')          #%Y年%m月%d日
    d2 = time.strftime("%Y-%m-%d",date1) 
    print(date1)
    print(d2)
    
    
      
      
      
      
      
      
      
      
    
    代码解释
时间转换成时间戳
复制代码
    import datetime
    import time
    
    time1 = datetime.datetime(2020,3,17,6.8,8,8)
    time= time.mktime(time1.timeuple())
    
    
      
      
      
      
      
    
    代码解释
datetime对象转换成字符串

-利用str或者strftime方法可以将datetime对象转换成字符串:

from datetime import datetime # 导入datetime模块
创建一个特定日期的时间对象 stamp = datetime(2018, 12, 6)
并将其转换为字符串格式 str(stamp) # 转换 #结果显示:‘2018-12-06 00:00:00’

-使用strftime函数,需要传入一个格式化字符串:

stamp.strftime(’%Y-%m-%d’) # 显示结果为:‘2018-12-06’
strftime稍微有点繁琐, 但用途广泛, 例如可以输出当前日期对应的星期几:

stamp.strftime("%w") # 结果显示:‘6’,表示当前日期为星期六

字符串转换成datetime对象

datetime.strptime可以用这些格式化编码将字符串转换成日期:

value = ‘2018-12-06’
datetime.strptime(value, ‘%Y/%m/%d’)
结果显示:
datetime.datetime(2018, 12, 6, 0, 0)

不同类型时间的转换
1.date: March 13, 2020
复制代码
    char ='\n                     Original release date: March 13, 2020\n'
    com = re.compile(r':(\s*[\S]+\s\d+,\s\d+)')                #( *[\s]+)
    char3 = re.findall(com, char)
    time2 = char3.replace(" |,", "")
    print
    # print()(time3)
    time_format2 = time.time.strptime(time2, '%B%d%Y')
    
    
      
      
      
      
      
      
      
    
    代码解释
2.Wed, 25 Mar 2020 08:00:28 +0000
复制代码
    date1 = 'Wed, 25 Mar 2020 08:00:28 +0000'
    date2 = time.strptime(date1,"%a, %d %b %Y %H:%M:%S +0000")
    date3 = time.strftime("%Y-%m-%d",date2)
    
    
      
      
      
    
    代码解释
3.时间:2019-05-15\xa0\xa0\xa0\xa0
复制代码
    char = "时间:2019-05-15\xa0\xa0\xa0\xa0"
    # com = re.compile(r'\d{4}-\d{2}-\d{2}')   # date1 = re.compile(r'd{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}',date)   #2020-2-23或者2020/2/23
    # char3 = re.findall(com, char)
    
    
      
      
      
    
    代码解释
4.2020-03-20 19:50:38
复制代码
    date3 ='2020-03-20 19:50:38'
    
     date4 = time.strptime(date3,"%Y-%m-%d %H:%M:%S")
     date5 = time.strftime("%Y-%m-%d",date4)
    
    
      
      
      
      
    
    代码解释
5.2020-03-11T17:15:07+00:00
复制代码
    format1="%Y-%m-%dT%H:%M:%S+00:00"
    format2="%Y-%m-%d %H:%M:%S"
    
     t1 = '2020-03-11T17:15:07+00:00'
     t = time.strptime(t1, format1)
    t2 = time.strftime(format2, t)
    print(t2)
    
    
      
      
      
      
      
      
      
    
    代码解释
6.Mar 14, 2020
复制代码
    time1 ='Mar 14, 2020'
    time2 = time1.replace(" ", "")
    time3 = time2.replace(",", "")
            # print()(time3)
      time_format2 = time.strptime(time3, '%b%d%Y')
      item['time'] = time.strftime("%Y-%m-%d",time_format2)
    
    
      
      
      
      
      
      
    
    代码解释
7.Thursday, March 26, 2020
复制代码
    date = 'Thursday, March 26, 2020'
    date2 = time.strptime(date, "%A, %B %d, %Y")
    date3 = time.strftime("%Y-%m-%d", date2)
    print(date3)
    
    
      
      
      
      
    
    代码解释
8.05月18, 2020
复制代码
    date='05月18, 2020'
    time_format2 = time.strptime(date, '%m月%d, %Y')
    date2 = time.strftime("%Y-%m-%d", time_format2)
    
    
      
      
      
    
    代码解释
2020-03-07T08:12:44.274Z
复制代码
    import time
    
    joined = '2020-03-07T08:12:44.274Z'
    data = time.strptime(joined,'%Y-%m-%dT%H:%M:%S.%fZ')
    
    join_time = time.strftime("%Y-%m-%d",data)
    print(join_time)
    
    
      
      
      
      
      
      
      
    
    代码解释
获取前一天时间
复制代码
    time1= ‘Mar 14, 2020 12:00:00 AM’
    
     time2 = datetime.datetime.strptime(time1, '%b %d, %Y %H:%M:%S AM')
    time3 = time2 - datetime.timedelta(days=1) #获取当前时间的前一天时间
    
    timestamp = time3.strftime("%Y-%m-%d")
    
    
      
      
      
      
      
      
    
    代码解释

时间字段说明

python中时间日期格式化符号:

符号 含义
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 2小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

全部评论 (0)

还没有任何评论哟~