zoukankan      html  css  js  c++  java
  • Python里的时间

    在系统的学习python的过程中,并没有接触到时间这个模块,但是在之后学习python的相关应用时,就接触到了,而且还很常见,比方说在用matplotlib里的finance模块从雅虎财经获得相关公司股票数据后,进行有关的分析,就要用到时间。很多数据其实都是有时间属性的,以后估计听常用,况且python的时间模块不仅齐全,语法也不复杂,只是有些繁琐,要记忆的东西挺多,这里就简单记录一下,也方便以后的查看。

    Python里的时间相关的模块,主要有两个,一个是time模块,还有一个是datetime模块,两者用法上有些重叠,但具体的使用又有些不同。照我浅显的经验,time模块处理的时间可以细化到微秒,而datetime模块则是处理到天,专业点的说,就是time的粒度更小。

    直接看例子。

    Time模块

    Example1

    # 先导入有关模块

    import time

    print 'time.time()', time.time()

    Time的time方法返回的是当前时间的时间戳(1970纪元后经过的浮点秒数)

    print 'time.localtime(time.time())', time.localtime(time.time())

    而localtime方法则是可以将秒数转化为一个九元组,何为九元?

    在python中是这个样子的

    看结果也是很清楚的

    print 'time.asctime(time.localtime(time.time()))', time.asctime( time.localtime(time.time()))

    asctime方法可以将一个结构化的时间转换为一个格式化的时间

    结果是这个样子,格式为星期、月、日、时、分、秒、年

    ctime方法同样可以,只是它的参数是秒数

    print time.ctime(time.time())

    结果与上面的是一样的

    localtime、asctime和ctime不用参数也都是可以的

    Example2

    print 'date.fromtimestamp()', date.fromtimestamp(time.time())

    fromtimestamp可以将一个秒数转换成 年-月-日的格式

    struct_time = time.strptime('2008-02-14', '%Y-%m-%d')

    print struct_time

    strptime()方法分析根据格式的时间字符串解析出其他的时间信息,返回的也是一个九元组,语法为

    具体的format有这些:

    • %a - 简写的星期几
    • %A - 完整的星期几
    • %b - 缩写的月份名称
    • %B - 完整的月份名称
    • %c - 首选日期和时间表示
    • %C - 世纪值(年份除以100,范围从00到99)
    • %d - 该月的第几天(0131)
    • %D - 类似 %m/%d/%y
    • %e - 该月的一天(131)
    • %g - 类似于%G,但是没有世纪
    • %G - 对应于ISO周数4位数的年份(参见%V)
    • %h - 类似于 %b
    • %H - 小时,使用24小时制(0023)
    • %I - 小时,使用12小时制(0112)
    • %j - 一年中的哪一天(001366)
    • %m - 月份(0112)
    • %M - 分钟
    • %n - 换行符
    • %p - 根据给定的时间值am或pm
    • %r - 时间在上午和下午的符号:am/pm
    • %R - 时间以24小时制
    • %S - 秒
    • %t - 制表符
    • %T - 当前时间,等于 %H:%M:%S
    • %u - 工作日为数字(1到7),星期一= 1。警告:在Sun Solaris上周日=1
    • %U - 当年的周数,第一个星期日作为第一周的第一天
    • %V - 本年度ISO 8601的周数(01到53),其中,第1周是在本年度至少4天的第一个星期,星期一作为一周的第一天
    • %W - 当年的周数,与第一个星期一作为第一周的第一天
    • %w - 星期为一个小数,星期日=0
    • %x - 没有时间的日期表示
    • %X - 无日期首选的时间表示
    • %y - 一年无世纪(范围从00到99)
    • %Y - 今年,包括世纪
    • %Z or %z - 时区或名称或缩写
    • %% -文字%字符

    结果是这样的

    最常用的还是要数strftime,常用于时间的转换

    t = time.localtime()

    strftime_time = time.strftime('%Y-%m-%d', t)

    print strftime_time

    strftime接受的参数必须是格式化的九元组时间,输出的格式自定义,具体的格式与strptime相同

    结果如下:

    clock返回当前CPU时间为几秒钟的浮点数。以测量不同方法的计算成本,time.clock的值比time.time()更有用

    print time.clock()

    a = 1 + 1

    print time.clock()

    第二个clock返回的是相较于第一个clock的时间间隔,在评价算法时间的时候比较有效

    Datatime模块(datatime模块中经常使用的是data子模块

    Example1

    首先导入相关库,看两个简单的例子

    print 'date.max', date.max

    print 'date.min', date.min

    输出结果是这样的

    显示的是python支持的时间范围

    Example2

    data模块中最重要的,是today方法,返回的是年-月-日格式的系统时间

    print 'date.today', date.today()

    datetime对象有很多函数和属性,使用起来也不复杂,可以用help(datetime)查看

    now = date.today()

    print now.strftime('%d-%m-%Y')

    print 'now.year', now.year

    print 'now.month', now.month

    print 'now.day', now.day

    Strftime也是转换格式的,和time模块里的是一样的,format也是一样的,year、month、day属性分别返回年月日

    Replace方法可以修改相关属性

    tomorrow = now.replace(day = 25)

    nextmonth = now.replace(month = 9)

    print 'tomorrow', tomorrow, 'nextmonth', nextmonth

    Timetuple()方法返回的是一个九元祖时间,toordinal()返回的与time.time()一样,是一个秒数,weekday()与isoweekday()的不同在于weekday()的范围是0-6,而isoweekday()范围是1-7,isocalendar()官方解释是Return a 3-tuple containing ISO year, week number, and weekday.,isoformat()返回年-月-日这样的标准格式

    print 'date.timetuple()', now.timetuple()

    print 'date.toordinal():', now.toordinal()

    print 'date.weekday():', now.weekday()

    print 'date.isoweekday():', now.isoweekday()

    print 'date.isocalendar():', now.isocalendar()

    print 'date.isoformat():', now.isoformat()

    Example3

    Python里的时间是可以进行计算的,比如说相加相减,最常用的是时间差

    now = date.today()

    tomorrow = now.replace(day = 30)

    delta = tomorrow - now

    print 'timedelta', delta

    print 'now + delta = tomorrow:', now + delta

    总结:python里的时间用的虽然不多,但是到了某些场合,价值还是很大的,多掌握一些肯定没有什么坏处,何况整理出来,以后万一哪个地方记得不清楚可以直接查看自己的博客,就省去了在别人博客里翻找的时间。

    我发现,在学习这些的时候,python帮助文档简洁明了,但又不好理解,看别人的博客,长是长了些,但有例子,比较生动,两者结合,甚好

    主要参考一下网站:

    http://www.yiibai.com/python/python_date_time.html

    http://blog.csdn.net/wirelessqa/article/details/7973121

    却道,此心安处是吾乡
  • 相关阅读:
    java核心学习笔记(三) java集合框架
    java核心学习笔记(二) 学习环境与学习的方法以及java几个包的作用
    java核心学习笔记(一) javaJDK目录阐述
    版本控制工具git的配置
    linux系统管理员之自动化检测工具 nagios及其插件配置
    运维工程师需要的技能
    在线求中位数(优先队列实现) POJ3784
    并查集 poj1308
    stack HDU1022
    hash数组 POJ1840
  • 原文地址:https://www.cnblogs.com/lucifer25/p/5819865.html
Copyright © 2011-2022 走看看