昨天在玩三国风云的时候,联盟要求同时攻击某城,就想算一下出兵时间。
比如要求23:59:30到,步兵的行进需要6小时12分30秒。需要定时在什么时候出兵。我比较懒,打算用python计算一下,直接用datetime类型的做秒(6*3600+12*60+30)的减法,结果错误。。查一下,datetime类里面有个timedelta的函数:
>>>datetime.datetime(2009,3,14,23,59,30) -
datetime.timedelta(seconds=6*3600+12*60+30)
datetime.datetime(2009, 3, 14, 17, 47) 就是要定时在17:47:00出兵。
timedelta默认时间单位是天days。dir(datetime.timedelta)看一下属性就可以查出来了。用的还是蛮方便的哈~~
顺便dir(datetime.datetime)看看,直接可以用year,month等属性,
更多来源:http://www.jiejuchina.com/question/
越来越喜欢python了,不过最近给老婆做个软件,cs结构,还是用pb做快,又翻出pb来,找以前的同事要了一份以前的类库,嘻嘻,感觉真好。。。python做桌面应用也可以,用了一下boa开发平台,感觉和delphi一样,很爽,可惜刚看一点例子,还没有能力开发商业化的东东,估计要等一段时间才能继续研究python啦。。。
import time, datetime
1. 得到当前时间
time.localtime() -> (2010, 1, 18, 13, 13, 2, 0, 18,
0)
datetime.datetime.now() -> datetime.datetime(2010, 1, 18, 13, 13, 47, 781000)
2. 日期转字符串:
(1) str(xx)
(2) time提供的函数:
time.strftime([format], time)
time.strftime('%Y-%m-%d %H:%M:%S', startTime)
'2009-06-03 13:44:51'
3. 字符串转日期:
(1) 字符串转time:
d = time.strptime(strStartTime, '%Y-%m-%d %H:%M:%S')
(2009, 6, 3, 13, 44, 51, 2, 154, -1)
type(d)
(2) 字符串转datetime
datetime的好处是可以实现方便的时间运算,比如 endTime -
starTime,这在时间duration计算时非常方便.
# Convert
string start time and end time to datetime.datetime
startTime = datetime.datetime(tmpStartTime[0], tmpStartTime[1],
tmpStartTime[2], tmpStartTime[3], tmpStartTime[4], tmpStartTime[5]
);
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
# 2007-11-25 15:36:35
#使用datetime模块可以很方便的解决这个问题,举例如下:
d1 = datetime.datetime(2005, 2, 16)
d2 = datetime.datetime(2004, 12, 31)
# 结果:47
print (d1 - d2).days
#上例演示了计算两个日期相差天数的计算。
starttime = datetime.datetime.now()
endtime = datetime.datetime.now()
print (endtime - starttime).seconds
#上例演示了计算运行时间的例子,以秒进行显示。
d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(days =10)
print str(d3)
print d3.ctime()
# 上例演示了计算当前时间向后10天的时间。
# 如果是小时 days 换成 hours
# 其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。
#
每个类都有一些方法和属性可以查看具体的值,如datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;
# timedelta可以查看:天数(days),秒数(seconds) 等。
#
# 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)
#其中d为日期时间对象