1. os.path中的st_ctime、 st_mtime和st_atime
python os.stat中 st_ctime 在windows系統可以用來獲取文件的創建時間,在linux系統沒有創建時間的概念,
st_ctime--文件狀態修改時間。Time when file status was last changed. Changed by the following functions:
chmod(), chown(), create(), link(2), mknod(), pipe(), unlink(2), utime(), and write().
st_mtime--文件內容修改時間。Time when data was last modified. Changed by the following functions:
create(), mknod(), pipe(), utime(), and write(2).
st_ atime--文件訪問時間。 Time when file data was last accessed. Changed by thefollowing functions:
create(), mknod(), pipe(), utime(2), and read(2).
st_ctime、st_mtime、st_atime都返回時間戳
2. os.utime()
# 修改訪問和修改時間, 文件為絕對路徑,訪問和修改時間入參都是時間戳
os.utime(文件絕對路徑, (1330712280, 1330712292))
os.utime(文件絕對路徑, None) #修改訪問和修改時間為當前時間
3.獲取當前時間、日期
獲取當前時間的時間戳: time.time()
格式化輸出當前日期為字符串,如20171228 ,用time.strftime("%Y%m%d")
或者
timeArray = time.localtime(timestamp) #timestamp為時間戳入參
date = time.strftime("%Y%m%d", timeArray)
或者(首選)
time.strftime("%Y%m%d", time.localtime())
格式化輸出當前時間為字符串,如20171228 14:40:40
timeArray = time.localtime(timestamp) #timestamp為時間戳入參
dateAndTime = time.strftime("%Y%m%d %H:%M:%S", timeArray)
或者(首選):
time.strftime("%Y%m%d %H:%M:%S", time.localtime())
4. 獲取下一個工作日(股票交易日T-->T+1)
def get_nextworkday():
# python中用%w格式化輸出星期幾, 星期分別對應字符0-6, '0'對應星期天,'1'對應星期一,'5'對應星期五
week = time.strftime("%w", time.localtime())
#星期五對應'5', 下一個工作是為當前日期加3天
if week == '5':
nextworkday = (datetime.datetime.now() + datetime.timedelta(days=3)).strftime("%m/%d/%Y")
#星期六對應'6', 下一個工作是為當前日期加2天
elif week == '6':
nextworkday = (datetime.datetime.now() + datetime.timedelta(days=2)).strftime("%m/%d/%Y")
else:
nextworkday = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%m/%d/%Y")
return nextworkday
5. 字符串轉為日期
str = '2020-01-01'
date = datetime.datetime.strptime(str,'%Y-%m-%d')
6.日期轉為字符串
與格式化輸出日期相同
datetime.now().strftime('%Y-%m-%d')
7. 從字符串中匹配日期,並格式化為另一種日期格式
text = 'this is a sunny day, in 2018-12-01, winter come.'
match = re.search(r'(\d{4}-\d{2}-\d{2})', text)
date1 = datetime.datetime.strptime(match.group(), '%Y-%m-%d')
#在轉為字符串時進行格式轉化
tranferred_date = date1.strftime("%m/%d/%Y")
8.獲取指定日期上個月最后一天
涉及月份和年份問題,用指定日期的月初減去一天
str = '01/01/2020'
date = datetime.datetime.strptime(str, '%m/%d/%Y')
last_day_of_previos_month = (datetime.date(date.year, date.month, 1) - datetime.timedelta(1)).strftime("%m/%d/%Y")
9.excel 數字日期轉為標准日期
#數字日期number_date必須為int類型, 需要import xlrd
number_date = 43404
standard_date = (xlrd.xldate.xldate_as_datetime(number_date, datemode = 0)).strftime("%m/%d/%Y")
10. 時間字符串轉為時間戳
date_str = '06/01/2018'
date = datetime.datetime.strptime(date_str, '%m/%d/%Y')
timestamp = time.mktime(date.timetuple())
11. 時間字符串轉為星期
#返回0-6, 0為周日, 1為周一,6為周六
date_str = '06/01/2018'
date = datetime.datetime.strptime(date_str, '%m/%d/%Y')
week = time.strftime("%w", date.timetuple())
12.獲取給定日期字符串的前一天
date_str = '06/01/2018'
date = datetime.datetime.strptime(date_str, '%m/%d/%Y')
lastday =(date + datetime.timedelta(days=-1)).strftime("%m/%d/%Y")
13.獲取日期字符串的年份
date_str = '06/01/2018'
date = datetime.datetime.strptime(date_str, '%m/%d/%Y')
yr = date.year
14. 用給定的年、月、日組成日期
date_str = '06/01/2018'
date = datetime.datetime.strptime(date_str, '%m/%d/%Y')
yr = date.year
t = (datetime.datetime(yr, 9, 23)).strftime('%m/%d/%Y')
15.時間的大小比較
時間元組可以進行大小比較
date_str = '06/01/2018'
date = datetime.datetime.strptime(date_str, '%m/%d/%Y')
date2 = datetime.datetime(2017, 3, 31)
if date>date2:
...
16.年份減1
# q的返回2017
date_str = '06/01/2018'
date = datetime.datetime.strptime(date_str, '%m/%d/%Y')
yr = date.year
q = yr - 1
17. datetime獲取當前時間,獲取年、月、日
cur = datetime.datetime.now()
print(cur.month)
print(cur.year)
print(cur.minute)
18.時區轉換
import pytz
# 打印美國時區
print(pytz.country_timezones('us'))
tz = pytz.timezone('America/New_York')
ny_time = datetime.datetime.now(tz).strftime("%m/%d/%Y")
#使用美國時區,獲取星期、日期、年份
a = datetime.datetime.now(pytz.timezone('America/New_York'))
week = time.strftime("%w", a.timetuple())
date = time.strftime("%m/%d/%Y", a.timetuple())
year1 = a.year
19.去掉日期中的前導0
# eg 01/03/2019-->1/3/2019, timetuple結構體中的數字不含前導0
time = datetime.datetime.now().timetuple()
date_now = str(time.tm_mon) + '/' + str(time.tm_mday) + '/' + str(time.tm_year)