python系统内部,提供了多个模块关于时间的调用。time与datetime是常用的两个。

  一、time模块:接口与C语言标准库time.h基本一致

  (一)常用的方法

  time.sleep(n)    休眠n秒  

  time.time()    时间戳,浮点数,1970年至今的秒数

  time.ctime()      当前本地时间,字符串

  time.localtime()     当前本地时间,时间对象

  time.gmtime()      当前格林威治时间,时间对象

import time

# 休眠
time.sleep(1)

#时间戳:1970年至今的秒数sec
print(time.time())
    # OUTPUT : 1495089588.7636719

#当前本地时间
print(time.ctime())
    # OUTPUT : Thu May 18 14:39:48 2017

#当前本地时间
print(time.localtime())
    # OUTPUT :  time.struct_time(tm_year=2017, tm_mon=5, tm_mday=18, tm_hour=14, tm_min=39, tm_sec=48, tm_wday=3, tm_yday=138, tm_isdst=0)

#当前格林威治时间GMT
print(time.gmtime())
    # OUTPUT : time.struct_time(tm_year=2017, tm_mon=5, tm_mday=18, tm_hour=6, tm_min=39, tm_sec=48, tm_wday=3, tm_yday=138, tm_isdst=0)
View Code

  (二)关于时间格式的转换

  1、time.gmtime和time.localtime,与format搭配,自定义时间显示格式

  2、time.strftime()   将时间对象转换成自定义格式的时间str

    time.strptime() 将任意格式的时间str转换成时间对象

  3、time.mktime()  将时间对象转换成时间戳

import time

# 使用time.gmtime()和time.localtime(),与format搭配,可自定义时间显示格式
# GMT与东八区(北京时间)差8hours

time_obj = time.gmtime(time.time()-86400)   # 昨天彼时,GMT
print('{}-{}-{}\t{}:{}:{}'.format(
    time_obj.tm_year,time_obj.tm_mon,time_obj.tm_mday,time_obj.tm_hour,time_obj.tm_min,time_obj.tm_sec))
    # OUTPUT : 2017-4-17    7:42:30

time_obj = time.gmtime()                    # 当前时刻,GMT
print('{}-{}-{}\t{}:{}:{}'.format(
    time_obj.tm_year,time_obj.tm_mon,time_obj.tm_mday,time_obj.tm_hour,time_obj.tm_min,time_obj.tm_sec))
    # OUTPUT : 2017-4-18    7:42:30

time_obj = time.localtime()                  # 当前时刻,当地
print('{}-{}-{}\t{}:{}:{}'.format(
    time_obj.tm_year,time_obj.tm_mon,time_obj.tm_mday,time_obj.tm_hour,time_obj.tm_min,time_obj.tm_sec))
    # OUTPUT : 2017-4-18    15:42:30

#--------------------------------------------------------------------
# 也可以使用time.strftime()将一个时间对象,转换成自定义的str时间格式

print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
     # OUTPUT : 2017-04-18 16:08:58

print(time.strftime('%m-%d-%Y %H:%M',time.gmtime()))
     # OUTPUT : 04-18-2017 08:10

#---------------------------------------------------------------------
# 使用time.strptime()将任意格式的时间str,转换成一个时间对象

print(time.strptime('04-18-2017 08:10','%m-%d-%Y %H:%M'))
     # OUTPUT : time.struct_time(tm_year=2017, tm_mon=4, tm_mday=18, tm_hour=8, tm_min=10, tm_sec=0, tm_wday=1, tm_yday=108, tm_isdst=-1)

#-----------------------------------------------------------------------
# 使用time.mktime()将时间对象转换成时间戳

print(time.mktime(time.localtime()))        # 将当前时间对象转换成时间戳格式
View Code

   二、datetime模块

  datetime中常用的两个模块是datetime.date和datetime.datetime。

  (一)datetime.date只涉及日期:年、月、日

   datetime.date.today() 按‘年—月—日’的格式显示当前日期

  datetime.date.fromtimestamp() 将时间戳转换成‘年--月--日’

  datetime.date.ctime()  按字符串形式显示当前日期

import time
import datetime

# ------------------------------datetime.date

# # 当前日期
# ret = datetime.date.today()
# print(ret,type(ret))    # 2017-05-19 <class 'datetime.date'>
#
# # 将时间戳格式转换成‘年-月-日’的格式
# ret = datetime.date.fromtimestamp(time.time())
# print(ret,type(ret))    # 2017-05-19 <class 'datetime.date'>
#
# # 当前日期,字符串形式
# ret = datetime.date.ctime(datetime.date.today())
# print(ret,type(ret))      # Fri May 19 00:00:00 2017 <class 'str'>
View Code

  (二)datetime.datetime包括全部的日期和时间

  datetime.datetime.now()  按 ‘年--月--日  小时:分钟:秒钟’ 格式显示日期和时间

  datetime.datetime.ctime() 按字符串形式显示当前日期和时间

# -----------------------------datetime.datetime
import datetime
# 当前日期和时间
ret = datetime.datetime.now()
print(ret,type(ret))    # 2017-05-19 08:56:07.404296 <class 'datetime.datetime'>

# 当前日期和时间,字符串形式
ret = datetime.datetime.ctime(datetime.datetime.now())
print(ret,type(ret))    # Fri May 19 08:58:39 2017 <class 'str'>
View Code