python的有关时间的有哪几种呢?今天我们介绍两个:time和datetime

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

datetime模块定义了下面这几个类:

  • datetime.date:表示日期的类。常用的属性有year, month, day;
  • datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
  • datetime.datetime:表示日期时间。
  • datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
  • datetime.tzinfo:与时区有关的相关信息。

python中处理的事件类型有哪几种呢?

* 时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的,如:1382678303.098

* 以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同如:time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=21, tm_sec=33, tm_wday=4, tm_yday=298, tm_isdst=0)

解释一下,前六个就不用解释了,解释下后四个:

tm_wday:(0-6, Monday is 0)

tm_yday:(day in the year, 1-366)

tm_isdst:(-1, 0 or 1)  0:普通  1:DST夏令时比正常的早一个小时  -1:根据当前时区

* 还有一种只能算作一种显示型式,字符串,如:2013-10-25 13:29:39.543000

为了从实用的角度出发就不把time和datetime分开了,从获取和输出的角度来整理下:

1. 如何获得时间,如何获得各种格式的时间?

time模块:

>>> import time
>>> time.time()#获得当前时间的时间戳
1382679270.196
>>> time.clock()#第一次运行获得当前时间的时间戳,第二次运行就是间隔上一次运行的时间间隔
2.1380998706449576e-06
>>> time.mktime((2013,11,11,11,11,11,1,1,0))#利用mktime函数创建一个时间戳
1384139471.0

datetime模块:

>>> from datetime import *
>>> date.today()*获取今天的日期
datetime.date(2013, 10, 25)
>>> datetime.today()#获取今天的日期和时间
datetime.datetime(2013, 10, 25, 13, 42, 53, 455000)
>>> datetime.now()#获取当前的日期和时间
datetime.datetime(2013, 10, 25, 13, 43, 0, 322000)

2. 有了时间后,再实际中会设计到格式之间的处理,比如数据库中一般会保存时间戳格式的,而现实的时候应该是字符串了吧,那个struct_time,好吧,用的比较少吧?

time模块:

时间戳-->struct_time,字符串

>>> import time
>>> a = time.time()#获取当前时间的时间戳
>>> a
1382680272.862
>>> time.ctime(a)*将时间戳转换为时间字符串
'Fri Oct 25 13:51:12 2013'
>>> time.gmtime(a)#将时间转换为struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=5, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> time.localtime()#将当前时间转换为struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=52, tm_sec=1, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> time.localtime(a)#将a转换为struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)

struct_time-->字符串,时间戳

>>> import time
>>> a = time.localtime()
>>> a
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=57, tm_sec=18, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> b = time.asctime(a)#转换为字符串
>>> b
'Fri Oct 25 13:57:18 2013'
>>> time.mktime(a)#转换为时间戳
1382680638.0
>>> time.strftime("%a %b %d %H:%M:%S %Y",a)#转换为字符串
'Fri Oct 25 13:57:18 2013'

字符串-->struct_time,PS:字符串不能直接转换为时间戳,需要先转为struct_time

>>> import time
>>> a
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> b = time.asctime(a)
>>> b
'Fri Oct 25 14:05:28 2013'
>>> c = time.strptime(b,'%a %b %d %H:%M:%S %Y')#按照格式转换为9元组
>>> c
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=-1)

datetime模块:

介绍几个datetime模块常用的方法:

datetime.fromtimestamp(time.time())#将时间戳转换为字符串

from datetime import *
import time print 'datetime.max:', datetime.max
print 'datetime.min:', datetime.min
print 'datetime.resolution:', datetime.resolution
print 'today():', datetime.today()
print 'now():', datetime.now()
print 'utcnow():', datetime.utcnow()
print 'fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time())#将时间戳转换为字符串
print 'utcfromtimestamp(tmstmp):', datetime.utcfromtimestamp(time.time()) # ---- 结果 ----
# datetime.max: 9999-12-31 23:59:59.999999
# datetime.min: 0001-01-01 00:00:00
# datetime.resolution: 0:00:00.000001
# today(): 2010-04-07 09:48:16.234000
# now(): 2010-04-07 09:48:16.234000
# utcnow(): 2010-04-07 01:48:16.234000 # 中国位于+8时间,与本地时间相差8
# fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000
# utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000

3. 处理一些特殊的情况,比如需要设定某个时间的间距的时候,用到datetime的datetime.timedelta类。

见代码:

#! /usr/bin/python
# coding=utf-8 from datetime import datetime,timedelta """
timedelta代表两个datetime之间的时间差
"""
now = datetime.now()
past = past = datetime(2010,11,12,13,14,15,16) timespan = now - past
#这会得到一个负数
past - now
attrs = [
("days","日"),( 'seconds',"秒"),( 'microseconds',"毫秒")
#('min',"最小"),( 'max',"最大"),
]
for k,v in attrs:
"timespan.%s = %s #%s" % (k,getattr(timespan, k),v) """
总共相差的秒数
"""
timespan.total_seconds() """
实例化一个timespan
请注意它的参数顺序
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
"""
timespan = timedelta(days=1)##timespan = timedelta(minutes=30)
now - timespan #返回的是datetime型
now + timespan timespan * 2 #还可以乘哦。代表二倍
timespan / 13 #增加一个月
from calendar import monthrange
now + timedelta(days=monthrange(start.year,start.month)[1])

最后列出格式化字符串中的意义:

%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:  时区名称(如果是本地时间,返回空字符串)
%%:  %% => %

例子:mysql中select当天的数据:

today = datetime.datetime.today()
print today
yestoday = today - datetime.timedelta(days=1)
print yestoday
content1 = db.query("select * from log where time > %s and time < %s",yestoday,today) 如果取的是前一天的0点到24点的数据则: day = datetime.datetime.now()
oneday = datetime.timedelta(days=1)
day = day - oneday
date_from = datetime.datetime(day.year, day.month, day.day, 00, 00, 00)
date_to = datetime.datetime(day.year, day.month, day.day, 23, 59, 59)

python 时间处理(time和datetime介绍)的更多相关文章

  1. python时间模块time,datetime

    时间模块time.datetime 模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默 ...

  2. python 时间模块time,datetime详细介绍

    模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践 ...

  3. python 时间模块time,datetime

    模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践 ...

  4. python时间模块-time和datetime

    时间模块 python 中时间表示方法有:时间戳,即从1975年1月1日00:00:00到现在的秒数:格式化后的时间字符串:时间struct_time 元组. struct_time元组中元素主要包括 ...

  5. python时间 time模块和datetime模块

    一.time模块 time模块中时间表现的格式主要有三种: a.timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 b.struct_time时间元组,共 ...

  6. Python标准库02 时间与日期 (time, datetime包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有良好的时间和日期管理功能.实际上,计算机只会维护一个挂钟时间(wa ...

  7. Python常用模块-时间模块(time&datetime)

    Python常用模块-时间模块(time & datetime) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.初始time模块 #!/usr/bin/env pyth ...

  8. (转)Python标准库02 时间与日期 (time, datetime包)

    原文:http://www.cnblogs.com/vamei/archive/2012/09/03/2669426.html https://www.liaoxuefeng.com/wiki/001 ...

  9. python时间处理之datetime

    python时间处理之datetime 标签: pythondateimportstringc 2012-09-12 23:21 20910人阅读 评论(0) 收藏 举报  分类: Python系列( ...

  10. Python时间与日期操作(datetime、time、calendar)

    相关模块 模块 说明 time time是一个仅包含与日期和时间相关的函数和常量的模块,在本模块中定义了C/C++编写的几个类.例如,struct_time类 datetime datetime是一个 ...

随机推荐

  1. dedecms 分页样式

    <div class="dede_pages">  <ul class="pagelist">   {dede:pagelist lis ...

  2. Git客户端TortoiseGit(Windows系统)的使用方法

    本文环境: 操作系统:Windows XP SP3 Git客户端:TortoiseGit-1.8.8.0-32bit 一.安装Git客户端 全部安装均采用默认! 1. 安装支撑软件 msysgit: ...

  3. Translation002—Package Index(Android包索引)

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 看本翻译前请您注意: 本人初学android,可能有的翻译不是非常准确,但本人尽最大努力,不清楚处会做标记,并附 ...

  4. 扩展 delphi 线程 使之传递参数.

    新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...

  5. MYSQL-给带特殊符号的数据库创建用户名

    MYSQL-创建数据库及用户名: mysql> create database yoon;Query OK, 1 row affected (0.00 sec) mysql> grant ...

  6. IOS 基于APNS消息推送原理与实现(JAVA后台)

    Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple Pu ...

  7. 如何导入ShareSDK的sample

    由于项目需要,最近需要做10几个平台的分享,如果自己去集成,浪费很多时间,而且还很难成功.最后发现Sharesdk,可以满足项目需求. 首先,需要到他们的官网http://sharesdk.cn/下载 ...

  8. Qt版helloworld

    跟学别的编程语言一样,Qt也不例外,一开始就想写一个helloworld.初学Qt十几天,看了一点关于Qt视频的介绍和书上的基础知识,对于Qt写工程的概念有了初步的认识,就代码的形式来说,Qt Cre ...

  9. python学习小结4:类

    虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程. 类和对象是面向对象编程的两个主要方面.类:创建一个新类型,而对象是这个类的实例,类使用class关键字创建.类的域和方法被列在一个 ...

  10. Week1 Team Homework #1: Study the projects done by previous student groups

      我们研究了学长的项目:百度3D地图API的调用.下面是我们对该项目的一些看法: 优点: 界面清晰 各类之间调用及其他关系容易理清. 缺点: 前段html代码过于冗杂,很多(div)块间的层次关系不 ...