zoukankan      html  css  js  c++  java
  • python 时间类型和相互转换

    time有四种类型(time, datetime, string, timestamp)

    1. time string
    string是最简单的表示time的方式
    如如下代码生成的即为string
    >>> import time
    >>> time.ctime()
    'Wed Nov 30 13:53:31 2016'
    或者更简单的生成一个字符串
    time_string = '2016-11-30 13:54:05'
     
    2. datetime tuple(datetime obj)
    datetime tuple是datetime.datetime对象类型
    >>> import datetime
    >>> datetime.datetime.now()
    datetime.datetime(2016, 11, 30, 13, 56, 51, 984213)
     
    3. time tuple(time obj)
    time tuple是time.struct_time对象类型
    >>> date_str = "2016-11-30 13:53:59"
    >>> time.strptime(date_str, "%Y-%m-%d %H:%M:%S")
    time.struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=13, tm_min=53, tm_sec=59, tm_wday=2, tm_yday=335, tm_isdst=-1)
     
    4. timestamp
    时间戳类型:自1970年1月1日(00:00:00 GMT)以来的秒数
    >>> import time
    >>> time.time()
    1480485476.20922
    

    time, datetime, string, timestamp相互转换

    1. string 转换为其它
    初始化:
        date_str = "2016-11-30 13:53:59"
     
    1.1 string --> datetime obj
    >>> import datetime
    >>> date_str = "2016-11-30 13:53:59"
    >>> datetime.datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
    datetime.datetime(2016, 11, 30, 13, 53, 59)
     
    1.2 string --> time obj
    >>> import time
    >>> date_str = "2016-11-30 13:53:59"
    >>> time.strptime(date_str, "%Y-%m-%d %H:%M:%S")
    time.struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=13, tm_min=53, tm_sec=59, tm_wday=2, tm_yday=335, tm_isdst=-1)
     
    2. datetime obj转换为其它
    datetime obj转换为其它类型,用的都是datetime的函数
    初始化:
        dt_obj = datetime.datetime(2016, 11, 30, 13, 53, 59)
    格式字符  意义
    
    %a 星期的简写。如 星期三为Web
    %A 星期的全写。如 星期三为Wednesday
    %b 月份的简写。如4月份为Apr
    %B 月份的全写。如4月份为April 
    %c:  日期时间的字符串表示。(如: 04/07/10 10:43:39)
    %d:  日在这个月中的天数(是这个月的第几天)
    %f:  微秒(范围[0,999999])
    %H:  小时(24小时制,[0, 23])
    %I:  小时(12小时制,[0, 11])
    %j:  日在年中的天数 [001,366](是当年的第几天)
    %m:  月份([01,12])
    %M:  分钟([00,59])
    %p:  AM或者PM
    %S:  秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
    %U:  周在当年的周数当年的第几周),星期天作为周的第一天
    %w:  今天在这周的天数,范围为[0, 6],6表示星期天
    %W:  周在当年的周数(是当年的第几周),星期一作为周的第一天
    %x:  日期字符串(如:04/07/10)
    %X:  时间字符串(如:10:43:39)
    %y:  2个数字表示的年份
    %Y:  4个数字表示的年份
    %z:  与utc时间的间隔 (如果是本地时间,返回空字符串)
    %Z:  时区名称(如果是本地时间,返回空字符串)
    %%:  %% => %
    2.1 dt obj --> string
    >>> import datetime
    >>> dt_obj = datetime.datetime(2016, 11, 30, 13, 53, 59)
    >>> dt_obj.strftime("%Y-%m-%d %H:%M:%S")
    '2016-11-30 13:53:59'
     
    2.2 dt obj --> time obj
    >>> import datetime
    >>> dt_obj = datetime.datetime(2016, 11, 30, 13, 53, 59)
    >>> dt_obj.timetuple()
    time.struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=13, tm_min=53, tm_sec=59, tm_wday=2, tm_yday=335, tm_isdst=-1)
     
    3. time obj转换为其它
    初始化:
        time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0)
     
    3.1 time obj --> string
    >>> import time 
    >>> time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0)
    >>> time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)
    '2016-11-30 13:51:18'
     
    3.2 time obj --> datetime obj
    >>> import time, datetime
    >>> time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0)
    >>> datetime.datetime(*time_tuple[0:6])
    datetime.datetime(2016, 11, 30, 13, 51, 18)
     
    3.3 time obj --> timestamp
    >>> import time 
    >>> time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0)
    >>> time.mktime(time_tuple)
    1480485078.0
     
    4. timestamp转换为其它
    初始化:
        timestamp = 1480486369.75
     
    --!!--注意以下两种都使用local时区
    4.1 timestamp --> dt obj
    >>> import datetime
    >>> timestamp = 1480486369.75
    >>> datetime.datetime.fromtimestamp(timestamp)
    datetime.datetime(2016, 11, 30, 14, 12, 49, 750000)
     
    4.2 timestamp --> time obj
    >>> import time
    >>> timestamp = 1480486369.75
    >>> time.localtime(timestamp)
    time.struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=14, tm_min=12, tm_sec=49, tm_wday=2, tm_yday=335, tm_isdst=0)
     
    --!!--以下两种方式和时区相关,比较标准时区时间和本地时区时间
    4.3 使用UTC --> dt obj
    #本地时区时间
    >>> import datetime
    >>> timestamp = 1480486369.75
    >>> datetime.datetime.fromtimestamp(timestamp)
    datetime.datetime(2016, 11, 30, 14, 12, 49, 750000)
    #标准时区时间
    >>> import datetime
    >>> timestamp = 1480486369.75
    >>> datetime.datetime.utcfromtimestamp(timestamp)
    datetime.datetime(2016, 11, 30, 6, 12, 49, 750000)
     
    4.4 使用UTC --> time obj
    #本地时区时间
    >>> import time
    >>> timestamp = 1480486369.75
    >>> time.localtime(timestamp)
    time.struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=14, tm_min=12, tm_sec=49, tm_wday=2, tm_yday=335, tm_isdst=0)
    #标准时区时间
    >>> import datetime
    >>> timestamp = 1480486369.75
    >>> time.gmtime(timestamp)
    time.struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=6, tm_min=12, tm_sec=49, tm_wday=2, tm_yday=335, tm_isdst=0)
  • 相关阅读:
    android 项目
    input keyevent 数字对应的操作
    logcat 使用方法
    android查看内存使用情况
    图片点击放大效果
    禁止img图片拖动在新窗口打开
    人工智能
    游戏开发
    随手做的一个模拟弹出窗口
    Html的<meta>标签使用方法及用例
  • 原文地址:https://www.cnblogs.com/shhnwangjian/p/6117602.html
Copyright © 2011-2022 走看看