[转载]python中时间戳、字符串之间转换详解

(2013-04-30 17:36:07)

转载▼
标签:

转载

原文地址:python中时间戳、字符串之间转换详解作者:doris0920

1)秒数 ==》字符串

1234567 from time import *  def secs2str(secs):         return strftime("%Y-%m-%d %H:%M:%S",localtime(secs))   >>> secs2str(1227628280.0) '2008-11-25 23:51:20'

2)字符串 ==》 秒数

123456 from time import *#先将时间字符串解析为9元组,例如: #2008-11-25 23:51:20,解析为9元组:[2008,11,25,23,51,20,0,0,0]。 >>> tmlist = [2008,11,25,23,51,20,0,0,0] >>> mktime(tmlist)1227628280.0

完整的函数:

12345678910 def secs2str(secs):     """ 将秒转化为字符串 """    if int(secs) < 0:         return ""     return str(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(secs))) def str2secs(tmlist=[]):     """ 将字符串的时间转化为秒 """    if len(tmlist) != 9:         return 0    return int(time.mktime(tmlist))

Python的time模块的部分翻译:
一、简介

time模块提供各种操作时间的函数
说明:一般有两种表示时间的方式:
第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的
第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同

year (four digits, 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) 是否是夏令时
If the DST flag is 0, the time is given in the regular time zone;
if it is 1, the time is given in the DST time zone;
if it is -1, mktime() should guess based on the date and time.

二、函数介绍
1.asctime()
asctime([tuple]) -> string
将一个struct_time(默认为当时时间),转换成字符串
Convert a time tuple to a string, e.g. ‘Sat Jun 06 16:26:11 1998′.
When the time tuple is not present, current time as returned by localtime()
is used.

2.clock()
clock() -> floating point number
该函数有两个功能,
在第一次调用的时候,返回的是程序运行的实际时间;
以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔

示例:

view plaincopy to clipboardprint?
import time
if __name__ == '__main__':
    time.sleep(1)
    print "clock1:%s" % time.clock()
    time.sleep(1)
    print "clock2:%s" % time.clock()
    time.sleep(1)
    print "clock3:%s" % time.clock()输出:
clock1:3.35238137808e-006
clock2:1.00004944763
clock3:2.00012040636
其中第一个clock输出的是程序运行时间
第二、三个clock输出的都是与第一个clock的时间间隔

3.sleep(…)
sleep(seconds)
线程推迟指定的时间运行,经过测试,单位为秒,但是在帮助文档中有以下这样一句话,这关是看不懂
“The argument may be a floating point number for subsecond precision.”

4.ctime(…)
ctime(seconds) -> string
将一个时间戳(默认为当前时间)转换成一个时间字符串
例如:

time.ctime()输出为:’Sat Mar 28 22:24:24 2009′

5.gmtime(…)
gmtime([seconds]) -> (tm_year, tm_mon, tm_day, tm_hour, tm_min,tm_sec, tm_wday, tm_yday, tm_isdst)
将一个时间戳转换成一个UTC时区(0时区)的struct_time,如果seconds参数未输入,则以当前时间为转换标准

6.localtime(…)
localtime([seconds]) -> (tm_year,tm_mon,tm_day,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst)
将一个时间戳转换成一个当前时区的struct_time,如果seconds参数未输入,则以当前时间为转换标准

7.mktime(…)
mktime(tuple) -> floating point number
将一个以struct_time转换为时间戳

8.strftime(…)
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

9.strptime(…)
strptime(string, format) -> struct_time
将时间字符串根据指定的格式化符转换成数组形式的时间
例如:
2009-03-20 11:45:39 对应的格式化字符串为:%Y-%m-%d %H:%M:%S
Sat Mar 28 22:24:24 2009 对应的格式化字符串为:%a %b %d %H:%M:%S %Y

10.time(…)
time() -> floating point number
返回当前时间的时间戳

三、疑点
1.夏令时
在struct_time中,夏令时好像没有用,例如
a = (2009, 6, 28, 23, 8, 34, 5, 87, 1)
b = (2009, 6, 28, 23, 8, 34, 5, 87, 0)
a和b分别表示的是夏令时和标准时间,它们之间转换为时间戳应该相关3600,但是转换后输出都为646585714.0

四、小应用
1.python获取当前时间
time.time() 获取当前时间戳
time.localtime() 当前时间的struct_time形式
time.ctime() 当前时间的字符串形式

2.python格式化字符串
格式化成2009-03-20 11:45:39形式

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())格式化成Sat Mar 28 22:24:24 2009形式

time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())3.将格式字符串转换为时间戳

a = "Sat Mar 28 22:24:24 2009"
  b = time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))

python time datetime模块详解
Time模块:
--------------------------
time() #以浮点形式返回自Linux新世纪以来经过的秒数。在linux中,00:00:00 UTC,

January 1, 1970是新**49**的开始。
>>> time.time()
1150269086.6630149
>>> time.ctime(1150269086.6630149)
>>> 'Wed Jun 14 15:11:26 2006'

time.ctime([sec])#把秒数转换成日期格式,如果不带参数,则显示当前的时间。

>>> import time
>>> time.ctime()
>>> 'Wed Jun 14 15:02:50 2006'
>>> time.ctime(1138068452427683)
'Sat Dec 14 04:51:44 1901'
>>> time.ctime(os.path.getmtime('E:\untitleds.bmp'))
'Fri Sep 19 16:35:37 2008'

>>> time.gmtime(os.path.getmtime('E:\untitleds.bmp'))
time.struct_time(tm_year=2008, tm_mon=9, tm_mday=19, tm_hour=8, tm_min=35,

tm_sec=37, tm_wday=4, tm_yday=263, tm_isdst=0)

将一个文件的修改时间转换为日期格式(秒 转 日期)
>>> time.strftime('%Y-%m-%d %X',time.localtime(os.path.getmtime('E:\untitleds.bmp')))
'2008-09-19 16:35:37'

#定时3秒。
>>> time.sleep(3)

TIME模块参考:
---------------------------------
#取一个文件的修改时间
>>> os.path.getmtime('E:\untitleds.bmp')
1221813337.7626641

变量
timezone 通用协调时间和本地标准时间的差值,以秒为单位。
altzone 通用协调时间和本地夏令时的差值
daylight 标志,本地时间是否反映夏令时。
tzname (标准时区名,夏令时时区名)
函数
time() 以浮点数返回纪元至今以来的秒数。
clock() 以浮点数返回CPU开始这个process的时间,(或者至上次调用这个函数的时间)
sleep() 延迟一段以浮点数表示的秒数。
gmtime() 把以秒表示的时间转换为通用协调时序列
localtime() 把秒时转换为本地时序列
asctime() 将时间序列转换成文本描述
ctime() 将秒时转换成文本描述
mktime() 将本地时序列转换成秒时
strftime() 以指定格式将序列时转为文本描述
strptime() 以指定格式从文本描述中解析出时间序列
tzset() 改变当地时区值

DateTime模块
----------------------------
datetime 将日期转化为秒
-------------------------------------
>>> import datetime,time
>>> time.mktime(datetime.datetime(2009,1,1).timetuple())
1230739200.0

>>> cc=[2000,11,3,12,43,33] #Attributes: year, month, day, hour, minute,

second
>>> time.mktime(datetime.datetime(cc[0],cc[1],cc[2],cc[3],cc[4],cc[5]).timetuple())
973226613.0

将秒转换为日期格式
>>> cc = time.localtime(os.path.getmtime('E:\untitleds.bmp'))
>>> print cc[0:3]
(2008, 9, 19)

DateTime示例
-----------------
演示计算两个日期相差天数的计算
>>> import datetime
>>> d1 = datetime.datetime(2005, 2, 16)
>>> d2 = datetime.datetime(2004, 12, 31)
>>> (d1 - d2).days
47

演示计算运行时间的例子,以秒进行显示
import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

演示计算当前时间向后10小时的时间。
>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()

其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值

3)glob
可以使用简单的方法匹配某个目录下的所有子目录或文件,用法也很简单。
3.1 glob.glob(regression) 返回一个列表
3.2 glob.iglob(regression) 返回一个遍历器
这个模块简单好用,强力推荐。

---------------------------------------------------------

使用datetime模块计算两个时间的差:

>>> import datetime
>>> d1=datetime.datetime(2010,9,8)
>>> d2=datetime.datetime(2005,8,12)
>>>(d1-d2).days
1853

That means  我这个blog开博至今已经5年28天啦!

计算运行时间的例子,以秒进行显示:

import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime - starttime).seconds

计算当前时间向后10小时的时间:

>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()

其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数(seconds) 等。

===================================

日期的操作必须使用time或datetime库

import time
>>> s="2006-1-2"
>>> time.strptime(s,"%Y-%m-%d)
这是将字符串格式的日期及时间转成日期对象
转义符对应意义如下
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%j 年内的一天(001-366)
%m 月份(01-12)
%M 分钟数(00=59)
%p 本地A.M.或P.M.的等价符
%S 秒(00-59)
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%Z 当前时区的名称
%% %号本身

================举例的分隔线====================

#-*- coding:utf-8 -*-

import time
import datetime

# time , datetime , string 类型互相转换
#
# string -> time
# time.strptime(publishDate,"%Y-%m-%d %H:%M:%S")
#
# time -> string
# time.strftime("%y-%m-%d",t)

date = '2007-01-01'

print type(date)

date = time.strptime(date,"%Y-%m-%d")

print type(date)

print date[0]

d4 = datetime.datetime(date[0], date[1],date[2])

print d4
print type(d4)

#将日期时间对象转成字符串则要用

date = time.strftime("%y-%m-%d",date)
print type(date)

#其中date为日期时间对象

==============我编辑的一个通用的时间计算小程序 ================

# -*- coding:GBK -*-
# 计算两个时间的间隔天数
# 注意:输入月份和天时,不能输入08,09等,会被识别为 8 进制而出错!(8进制是不超过07的)
# 解决办法:要把月份和天前面的0去掉。

from datetime import datetime

(y1,m1,d1) = input("请输入时间1(格式为2009,8,9):")
(y2,m2,d2) = input("请输入时间2:")

date1 = datetime(y1,m1,d1)
date2 = datetime(y2,m2,d2)

days = (date2-date1).days

if (days<0):  # 如果时间相差为负数,取为正数
    days = -days

if (days>365):
    print '两个时间相隔',days/365,'年',days65,'天'
else:
    print '两个时间相隔',days,'天!'

python中时间戳、字符串之间转换详解相关推荐

  1. python中f字符串f-string用法详解

    一.f-string字符串用法 1.f字符串用法 f-string: formatted string literals, 格式化字符串常量. 格式化 {} 内容,不在 {} 内的照常展示输出,如果你 ...

  2. python datetime to timestamp_python timestamp和datetime之间转换详解

    做开发中难免时间类型之间的转换, 最近就发现前端js和后端django经常要用到这个转换, 其中jsDate.now()精确到毫秒,而Python中Datetime.datetime.now()是精确 ...

  3. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  4. Python中的select、epoll详解

    Python中的select.epoll详解 文章目录 Python中的select.epoll详解 一.select 1.相关概念 2.select的特性 1.那么单进程是如何实现多并发的呢??? ...

  5. Python中random模块生成随机数详解

    Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...

  6. 十进制与二进制之间转换详解

    文章目录 十进制与二进制之间转换详解 (一)十进制数转二进制数 1.1 十进制正整数转二进制 1.2 十进制负整数转二进制 1.3 十进制小数转二进制数 (二) 二进制数转成十进制数 2.1 二进制整 ...

  7. python中的subprocess.Popen()使用详解---以及注意的问题(死锁)

    从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...

  8. Python中数组切片的用法详解

    Python中数组切片的用法详解 一.python中"::-1"代表什么? 二.python中":"的用法 三.python中数组切片 三.numpy中的整数数 ...

  9. Python异常重试解决方案 Python中异常重试的解决方案详解

    想了解Python中异常重试的解决方案详解的相关内容吗,标点符在本文为您仔细讲解Python异常重试解决方案的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:python,重试,python ...

最新文章

  1. c语言链表删除前一个节点,最简单的链表删除第一个节点时释放内存的问题
  2. SpringCloud微服务:Ribbon和Feign组件,实现服务调用的负载均衡
  3. python里textfield_Django:为什么我的CharField没有得到类vTextField?
  4. SpringBoot是什么?SpringBoot的优缺点有哪些?
  5. Huber Loss function
  6. C#如何获取物理网卡,虚拟网卡,以及无线网卡
  7. 【CS285 深度强化学习 】作业一之详解 [Deep Reinforcement Learning]
  8. dns预获取(dns-prefetch)link rel="dns-prefetch"优化载入速度
  9. Web App - MUI框架初体验
  10. bitcoin P2P协议分析
  11. 《快速掌握PyQt5》第二章 信号与槽——裁判鸣枪与选手开跑
  12. 使用beeline/hive时,该如何停止打印INFO日志
  13. day 19 C# 窗体金额换算
  14. 在Linux打包成jar
  15. 识别最优的数据驱动特征选择方法以提高分类任务的可重复性
  16. C/C++动态申请空间
  17. c语言冯诺依曼原理,冯诺依曼型计算机的基本原理是什么
  18. SPOJ7258--SUBLEX(SAM)
  19. 金蝶K3系统BOM新增BOM编号与父项物料编码同步需求实现
  20. android特效集锦系列之八 仿快播搜索框悬浮文字搜索

热门文章

  1. 针对工控系统的TRITON入侵活动由俄罗斯研究所支持 ||朝鲜Lazarus组织Battle Cruiser活动再度来袭...
  2. 《Oracle Java EE编程自学与面试指南》20-05:数据库设计
  3. 年末大清仓,用Python绘制饼状图对商品库存进行分析
  4. 全网最详细的 动态Toolbar 开发实践总结,99%的程序员都在看!
  5. “好评返现”违法,有商家被罚,双11剁手党们坐不住了
  6. 推荐一个在线测试服务器延迟和丢包的工具 Ping.pe
  7. Java中各国时区的写法
  8. MPC3150 1A最大峰值输出电流 门驱动器 光电耦合器芯片代替LTV-3150
  9. 机器学习代价函数求导梯度下降求解最优值源码数据
  10. 雷神的微软平台安全宝典:使用源端口访问规则来限制访问