Python日期时间

#coding: utf-8
import time
import datetime

#获取当前时间
time_now=time.time()#float类型时间戳(0000000000.000)
print "获取当前时间;time_now:        "+str(time_now)#打印时显示的是四舍五入的(0000000000.00)
time_now_local=time.localtime()#time.struct_time类型(元组),有精度损失,少3位毫秒数(将float转int导致)
print "获取当前时间;time_now_local:  "+str(time_now_local)
# 将time时间戳转time.struct_time
time_now_local2=time.localtime(time_now)
# 将time.struct_time转time时间戳
time_now_stamp=time.mktime(time_now_local2)#time_now!=time_now_stamp

date_now=datetime.datetime.now()#datetime.datetime类型,today(),utcnow()方法和now()具有相同效果
date_now_today=datetime.datetime.today()
date_now_utc=datetime.datetime.utcnow()#UTC=(Universal Time Coordinated)=格林威治时间=世界标准时间
print "获取当前时间;date_now:        "+str(date_now)

# 将datetime.datetime转time.struct_time
time_now_local3=date_now.timetuple()#精度损失
print "日期时转元组;time_now_local3: "+str(time_now_local3)
# 将time.struct_time转datetime.datetime
"""暂时没有找到对应的方法"""

# 将字符串转时间
time_2011=time.strptime("2011/11/11 11:11:11","%Y/%m/%d %H:%M:%S")
print "字符串转时间;time_2011:       "+str(time_2011)
date_2011=datetime.datetime.strptime("2011/11/11 11:11:11","%Y/%m/%d %H:%M:%S")
print "字符串转时间;date_2011:       "+str(date_2011)

#将时间转字符串
time_now_str=time.strftime("%Y-%m-%d %H:%M:%S",time_now_local)
print "时间转字符串;time_now_str:    "+str(time_now_str)
date_now_str=date_now.strftime("%Y-%m-%d %H:%M:%S")
print "时间转字符串;date_now_str:    "+str(date_now_str)

#将时间转毫秒数
time_now_millis=long(time_now*1000.0)
print "时间转毫秒数;time_now_millis: "+str(time_now_millis)
date_now_millis=long(time.mktime(date_now.timetuple())*1000.0)#不精准,比time_now_millis少3位
print "时间转毫秒数;date_now_millis: "+str(date_now_millis)

#将毫秒数转时间
time_now_stamp2=float(time_now_millis)/1000.0
print "毫秒数转时间;time_now_stamp2: "+str(time_now_stamp2)
time_now_local4=time.localtime(time_now_stamp2)
print "毫秒数转时间;time_now_local4: "+str(time_now_local4)
"""暂时没有找到转datetime.datetime对应的方法"""

输出:

获取当前时间;time_now:        1477379724.27
获取当前时间;time_now_local:  time.struct_time(tm_year=2016, tm_mon=10, tm_mday=25, tm_hour=15, tm_min=15, tm_sec=24, tm_wday=1, tm_yday=299, tm_isdst=0)
获取当前时间;date_now:        2016-10-25 15:15:24.275586
日期时转元组;time_now_local3: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=25, tm_hour=15, tm_min=15, tm_sec=24, tm_wday=1, tm_yday=299, tm_isdst=-1)
字符串转时间;time_2011:       time.struct_time(tm_year=2011, tm_mon=11, tm_mday=11, tm_hour=11, tm_min=11, tm_sec=11, tm_wday=4, tm_yday=315, tm_isdst=-1)
字符串转时间;date_2011:       2011-11-11 11:11:11
时间转字符串;time_now_str:    2016-10-25 15:15:24
时间转字符串;date_now_str:    2016-10-25 15:15:24
时间转毫秒数;time_now_millis: 1477379724274
时间转毫秒数;date_now_millis: 1477379724000
毫秒数转时间;time_now_stamp2: 1477379724.27
毫秒数转时间;time_now_local4: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=25, tm_hour=15, tm_min=15, tm_sec=24, tm_wday=1, tm_yday=299, tm_isdst=0)

格式化字符:

%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 当前时区的名称
%% %号本身

相比较Java已比较混乱的util.Date、sql.Date、Calendar类,我觉得Python的日期就非常简单,
错错错,说错了,是:
相比较Java已比较混乱的util.Date、sql.Date、Calendar类,我觉得Python的日期更混乱,简直不敢直视。
光datetime类就有以下子类
datetime.date类表示日期
datetime.time类表示时间
datetime.datetime类表示日期时间
datetime.timedelta类表示时间差
datetime.tzinfo类表示时区信息
这还不包括单独的time类和calendar类。
真是垃圾的设计,本猿只是想好好的写几句时间相关的代码,却要研究你这么繁杂的API?
以前老抱怨Java的Date类有很多过时方法,现在我感觉Java设计即使有毛病也比这Python二货好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值