time和datetime时间戳---python

参考网址,写的很棒:

 

 

 

http://www.open-open.com/lib/view/open1479363382807.html

个人封装好的函数,可以互相转换

 

class my_datetime():
    """
    Basic usage:

        a = datetime.datetime(2016, 9, 21, 13, 42, 8)
        b = "2016-11-15 15:32:12"
        c = u'2016-09-21 13:37:34'
        print type(c)
        d = 1474436826.0
        e = 13710788676.0
        ret = my_datetime()
        res = ret.become_datetime(e)
        print res
        print type(res)
    """

    def __init__(self):
        # 缺少对utc时间的判断
        pass

    def become_timestamp(self, dtdt):
        # 将时间类型转换成时间戳
        if isinstance(dtdt, datetime.datetime):
            timestamp = time.mktime(dtdt.timetuple())
            return timestamp

        elif isinstance(dtdt, str):
            if dtdt.split(" ")[1:]:
                a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d  %H:%M:%S")
                timestamp = time.mktime(a_datetime.timetuple())
            else:
                a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d")
                timestamp = time.mktime(a_datetime.timetuple())
            return timestamp

        elif isinstance(dtdt, float):
            return dtdt

            # elif isinstance(dtdt, unicode):
            #     if dtdt.split(" ")[1:]:
            #         a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d %H:%M:%S")
            #         timestamp = time.mktime(a_datetime.timetuple())
            #     else:
            #         a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d")
            #         timestamp = time.mktime(a_datetime.timetuple())
            #     return timestamp

    def become_datetime(self, dtdt):
        # 将时间类型转换成datetime类型
        if isinstance(dtdt, datetime.datetime):
            return dtdt

        elif isinstance(dtdt, str):
            if dtdt.split(" ")[1:]:
                a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d %H:%M:%S")
            else:
                a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d")
            return a_datetime

        elif isinstance(dtdt, float):
            # 把时间戳转换成datetime类型
            a_datetime = datetime.datetime.fromtimestamp(dtdt)
            return a_datetime

            # elif isinstance(dtdt, unicode):
            #     if dtdt.split(" ")[1:]:
            #         a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d %H:%M:%S")
            #     else:
            #         a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d")
            #     return a_datetime

    def become_str(self, dtdt):
        # 把时间类型转换成字符串
        if isinstance(dtdt, datetime.datetime):
            a_datetime = dtdt.strftime("%Y-%m-%d %H:%M:%S")
            return a_datetime

        elif isinstance(dtdt, str):
            return dtdt

        elif isinstance(dtdt, float):
            a_datetime_local = datetime.datetime.fromtimestamp(dtdt)
            a_datetime = a_datetime_local.strftime("%Y-%m-%d %H:%M:%S")
            return a_datetime

            # elif isinstance(dtdt, unicode):
            #     # 区别:一个是strp, 一个是strf
            #     if dtdt.split(" ")[1:]:
            #         a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d %H:%M:%S")
            #         a_datetime = a_datetime.strftime("%Y-%m-%d %H:%M:%S")
            #     else:
            #         a_datetime = datetime.datetime.strptime(dtdt, "%Y-%m-%d")
            #         a_datetime = a_datetime.strftime("%Y-%m-%d")
            #     return a_datetime

    @staticmethod
    def str_datetime():
        return (datetime.datetime.now()).strftime("%Y-%m-%d %H:%M:%S")
View Code

 

 

 

time模块

time模块提供各种操作时间的函数

说明:一般有两种表示时间的方式:
       1.时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的

       2.以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同

 

The tuple items are:
  year (including century, e.g. 1998)
  month (1-12)
  day (1-31)
  hours (0-23)
  minutes (0-59)
  seconds (0-59)
  weekday (0-6, Monday is 0)
  Julian day (day in the year, 1-366)
  DST (Daylight Savings Time) flag (-1, 0 or 1)

 

1   time()  -- 返回时间戳  
2   sleep() -- 延迟运行单位为s  
3   gmtime() -- 转换时间戳为时间元组(时间元组)  
4   localtime() -- 转换时间戳为本地时间对象  
5   asctime() -- 将时间对象转换为字符串  
6   ctime() -- 将使劲按戳转换为字符串  
7   mktime() -- 将本地时间转换为时间戳  
8   strftime() -- 将时间对象转换为规范性字符串  

常用的格式代码:

 

 1     %Y Year with century as a decimal number.  
 2     %m Month as a decimal number [01,12].  
 3     %d Day of the month as a decimal number [01,31].  
 4     %H Hour (24-hour clock) as a decimal number [00,23].  
 5     %M Minute as a decimal number [00,59].  
 6     %S Second as a decimal number [00,61].  
 7     striptime() --将时间字符串根据指定的格式化字符转换成数组形式的时间  
 8       
 9     print(time.time())  ---返回当前时间戳  
10     print(time.ctime())  ---返回当前时间  
11     print(time.ctime(time.time()-86400)) --将时间戳转换为字符串  
12     print(time.localtime(time.time()-86400)) --本地时间  
13     print(time.mktime(time.localtime()))  --与time.localtime()功能相反,将struct_time格式转回成时间戳格式  
14     print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))  -- 将struct_time格式转换指定d字符串格式  
15     print(time.strptime("2016-01-28","%Y-%m-%d"))  --将字符串格式转换成struct_time格式  
16     time.sleep(5) 休眠5s  

 

datetime 模块

常用的有:

import datetime
 
print(datetime.datetime.now())                                         # 2016-05-17 15:46:40.784376  获取当前的日期和时间
print(datetime.datetime.now()+datetime.timedelta(days=10))             # 2016-05-27 15:47:45.702528  将当前的时间向后推迟10天
print(datetime.date.today())                                           # 2016-05-17  获取当前的日期
print(datetime.datetime.utcnow())                                      # 2016-05-17 08:23:41.150628  获取格林威治时间
 
print(datetime.datetime.now().timetuple())                      # time.struct_time(tm_year=2016 ... tm_hour=16,...)获取当前一个包含当前时间的结构体
print(datetime.datetime.now().timestamp())                      # 1463473711.057878  获取当前的时间戳
print((datetime.datetime.fromtimestamp(1463473711.057878)))          # 2016-05-17 16:28:31.057878 将时间戳转换成日期和时间
print(datetime.datetime.strptime('2016-05-17 16:28:31','%Y-%m-%d %H:%M:%S'))  #2016-05-17 16:28:31     str转换为datetime
print(datetime.datetime.now().strftime('%D, %m %d %H:%M'))                    #05/23/16, 05 23 10:10  datetime转换为str

 

定义的类有:

 1 datetime.date   --表示日期的类。常用的属性有year,month,day  
 2 datetime.time   ---表示时间的类。床用的属性有hour,minute,second,microsecond  
 3 datetime.datetime  --表示日期时间  
 4 datetime.timedalta --表示时间间隔,即两个时间点之间的长度  
 5 date类  
 6 date类表示日期,构造函数如下:  
 7 datetime.date(year,month,day);  
 8     year(1-9999)  
 9     month(1-12)  
10     day(1-31)  
11 date.today()--返回一个表示当前本地日期的date对象  
12 date.fromtimestamp(timestamp) -- 根据给定的时间戳,返回一个date对象  
13 date.year() -- 取给定时间的年  
14 date.month() -- 取时间对象的月  
15 date.day() -- 取给定时间的日  
16     date.replace()  -- 生成一个新的日期对象,用参数指定的年,月, 日代替原有对象中的属性  
17     date.timetuple() -- 返回日期对应的time.struct_time对象  
18     date.weekday() -- 返回week,Monday==0...Sunday == 6  
19     date.isoweekday() -- 返回weekday,Monday == 1...Sunday == 7  
20     date.ctime()  -- 返回给定时间的字符串格式  
print(datetime.date.today().year)  -- 取时间对象的年  
print(datetime.date.today().month) --取时间对象的月  
print(datetime.date.today().day)  --取时间对象的日  
print(datetime.date.today().replace(2010,6,12))  --生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性  
print(datetime.date.today().timetuple()) 返回给定时间的时间元组/对象  
print(datetime.date.today().weekday())  -- 返回weekday,从0开始  
print(datetime.date.today().ctime)  --返回给定时间的字符串格格式  
  
  
    .tiem类  
    time类表示时间,由时,分,秒以及微秒组成  
        time.min()  --最小表示时间  
        time.max()  --最大表示时间  
        time.resolution()  -- 微秒  
    案例:  
        最大时间  
        print(datetime.time.max)  
        最小时间  
        print(datetime.time.min)  
        时间最小单位,微秒  
        print(datetime.time.resolution)  
 1     ·datetime类  
 2         datetime是date与time的结合体,包括date与time的所有信息  
 3         datetime.max()  --最大值  
 4         datetime.min()  --最小值  
 5         datetime.resolution --datetime最小单位  
 6         datetime.today()  -- 返回一个表示当前本地时间  
 7         datetime.fromtimestamp()  --根据给定的时间戳,返回一个datetime对象  
 8         datetime.year() --取年  
 9         datetime.month() --取月  
10         datetime.day() -- 取日期  
11         datetim.replace() - 替换时间  
12         datetime.strptime()  --将字符串转换成日期格式  
13         datetime.time() -- 取给定日期时间的时间  
 1 案例:  
 2   
 3   
 4 print(datetime.datetime.max)         #datetime最大值  
 5   
 6 print(datetime.datetime.min)         #datetime最小值  
 7   
 8 print(datetime.datetime.resolution)   #datetime最小单位  
 9   
10 print(datetime.datetime.today())     #返回一个表示当前本地时间  
11   
12 print(datetime.datetime.fromtimestamp(time.time()))#根据给定的时间戮,返回一个datetime对象  
13   
14 print(datetime.datetime.now().year)   #取时间对象的年  
15   
16 print(datetime.datetime.now().month)   #取时间对象的月  
17   
18 print(datetime.datetime.now().day)    #取时间对象的日  
19   
20 print(datetime.datetime.now().replace(2010,6,12))#生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性  
21   
22 print(datetime.datetime.now().timetuple())  #返回给定时间的时间元组/对象  
23   
24 print(datetime.datetime.now().weekday())  #返回weekday,从0开始  
25   
26 print(datetime.datetime.now().isoweekday())  #返回weekday,从1开始  
27   
28 print(datetime.datetime.now().ctime())    #返回给定时间的字符串格式  
29   
30 print(datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M"))#将字符串转换成日期格式  
31   
32 print(datetime.datetime.now().time())   #取给定日期时间的时间  
33   
34 print(datetime.datetime.now() + datetime.timedelta(days=-5))#获取5日前时间  

 

posted @ 2016-07-05 10:12  我当道士那儿些年  阅读(6419)  评论(0编辑  收藏  举报