python時間、日期處理


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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM