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. PHP页面跳转代码

    这年头,真是好记性不如烂笔头,学的还没有忘的快,刚才用到的页面跳转,却又记不清楚了,故特意整理了一下,用做以后参考.从一个网页跳转到另一个网页,是LAMP项目中最常用的技术之一,页面跳转可能是由于用户 ...

  2. 显示 mac 隐藏文件

    显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令:defaults writ ...

  3. TypeError: Object #<IncomingMessage> has no method 'flash'

    JavaScript相关代码: router.post('/reg', function(req, res) { //检验用户两次输入的口令是否一致 if (req.body['password-re ...

  4. Android应用市场提交入口

    应用市场是整个移动生态系统的核心,然而对于中国用户来说,Google Play应用商店却因为种种原因,在中国一直无法长期稳定的运作,又加上Android系统的开源特性,从而在中国造就出大量的第三方应用 ...

  5. 历时一周,unity3d+xtion打造我的第一个休闲体感小游戏《空降奇兵》

    1.游戏介绍 本游戏属于休闲小游戏,主要操作如下: 菜单控制:举起左手或右手,点击左边或者右边的菜单:挥动左手或右手,选择关卡: 操作方式:玩家跳跃,游戏中的伞兵从飞机开始降落:玩家通过控制伞兵的左右 ...

  6. 活动 Activity 四种加载模式

    singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例.(注意是栈顶,不在栈顶照样创建新实例!) singleTas ...

  7. java.util.ConcurrentModificationException 解决办法(转)

    今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足条件的对象,这时想当然地想到直接调用Set的remove(Object o)方法将指定的对象删除即可,测试代码:   public cla ...

  8. 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

    // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "stdafx.h ...

  9. org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.mysql.jdbc.Driver class not found

    今天在使用hibernate搭建开发环境的时候出现了一个不可思议的问题: org.hibernate.service.classloading.spi.ClassLoadingException: S ...

  10. Node.js 随记

    http://nodejs.org/  下载并安装 node.js 最新版本 运行cmd,输入npm install xxxxxx 回车,安装扩展模块,如:express,socket.io等 运行c ...