1.python中datetime怎么用
''''' 日期相关的操作 '''
from datetime import datetime
from datetime import timedelta
DATE_FMT = '%Y-%m-%d'
DATETIME_FMT = '%Y-%m-%d %H:%M:%S'
DATE_US_FMT = '%d/%m/%Y'
'''''
格式化常用的几个参数
Y : 1999
y :99
m : mouth 02 12
M : minute 00-59
S : second
d : day
H : hour
'''
def dateToStr(date):
'''''把datetime类型的时间格式化自己想要的格式'''
return datetime.strftime(date, DATETIME_FMT)
def strToDate(strdate):
'''''把str变成日期用来做一些操作'''
return datetime.strptime(strdate, DATETIME_FMT)
def timeElement():
'''''获取一个时间对象的各个元素'''
now = datetime.today()
print 'year: %s month: %s day: %s' %(now.year, now.month, now.day)
print 'hour: %s minute: %s second: %s' %(now.hour, now.minute, now.second)
print 'weekday: %s ' %(now.weekday()+1) #一周是从0开始的
def timeAdd():
'''''
时间的加减,前一天后一天等操作
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
参数可以是正数也可以是负数
得到的对象可以加也可以减 乘以数字和求绝对值
'''
atime = timedelta(days=-1)
now = datetime.strptime('2001-01-30 11:01:02', DATETIME_FMT)
print now + atime
print now - abs(atime)
print now - abs(atime)*31
import calendar
def lastFirday():
today = datetime.today()
targetDay = calendar.FRIDAY
thisDay = today.weekday()
de = (thisDay - targetDay) % 7
res = today - timedelta(days=de)
print res
def test():
#print dateToStr(datetime.today())
#print strToDate('2013-01-31 12:00:01')
#timeElement()
#timeAdd()
#lastFirday()
if __name__=='__main__':
test()
2.python获取系统时间有问题(时区?)写了一段python代码
确保系统时区设置正确。
date命令显示的是本地时间。然后 python datetime。
now() 默认就是本地时间。123456>>> import datetime>>> datetime。
datetime。now()datetime。
datetime(2016, 8, 5, 16, 51, 52, 67275)>>> print(datetime。datetime。
now())2016-08-05 16:51:59。972713>>> 嗯,那就是代码都在远程执行。
改本地时区没有用。你试试看这样:12345>>> import pytz>>> import datetime>>> datetime。
datetime。now(pytz。
timezone('Asia/Shanghai'))datetime。 datetime(2016, 8, 5, 17, 13, 52, 893693, tzinfo=)>>>pytz 内置了世界上大部分时区。
如果不用pytz,要自己定义时区类。
3.python日期加减比较问题请教
# time模块实现, 也是自带的
# 字符串不好计算~但是时间戳是固定的呀。
# 计算结果中, 假定今天24日, 输入24, 输出0天, 输入25, 输出-1天
import time
def f(tm):
stamp = time.mktime(time.strptime(tm, "%Y%m%d"))
diff = int((time.time() - stamp) // 86400)
if diff <= 180:
return {tm: str(diff)}
else:
d = {}
while diff > 180:
d[tm] = 180
stamp += 180 * 86400
diff = int((time.time() - stamp) // 86400)
# 注意这里time.gmtime()返回的是0时区日期, 需要处理时区问题
tm = time.strftime("%Y%m%d", time.gmtime(stamp - time.timezone))
else:
d[tm] = str(diff)
return d
if __name__ == '__main__':
tm = '20160325'
print(f(tm))
tm = '20171015'
print(f(tm))
# 结果输出, 注意: 字典是没有固定顺序的
'''
{'20160921': 180, '20170320': 180, '20170916': '38', '20160325': 180}
{'20171015': '9'}
'''
4.如何使用python中timedelta这个类实现月份的累加
这个玩意不好整月份增加 实在要整的也可以 1 计算出这段指定时间的当天时间凌晨时间和叠加月后的凌晨时间2 求出相差的天数3 最后再加天数再指定的时间内叠加即可不过网上的大神们 有简单的方法 可以试试# -*- coding: utf-8 -*-import datetimenow = datetime.datetime.now()#当前日期print nowaddmonths = 3 #增加的月份数 往前推 就是负数 -3print now.replace(month=(now.month + addmonths - 1) % 12 + 1, year=now.year if now.month < 10 else now.year + 1)。