Python時間模組常用操作總結
時間模組常用操作總結為下列各個函式:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import time
import datetime
import calendar
def second_to_datetime_string(seconds):
"""
將從公元0年開始的秒數轉換為datetime的string形式
:param seconds: 從公元0年開始的秒數
:return: datetime的string形式
"""
s = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(float(seconds)))
year = s.split('-', 1)[0]
rest = s.split('-', 1)[1]
year = int(year) - 1970 # datetime是從1970開始的,因此計算時需要減去1970
return '{}-{}'.format(str(year), rest)
def gregorian_date_to_str(year, month, day):
"""
將公元日期轉換成字串,year佔4位,month佔2位,day佔2位,位數不足補0
:param year: 年份,例如2017
:param month: 月份,例如8或者08
:param day: 天,例如12或者02或者2
:return: 返回位數固定的字串,例如2017-08-22
"""
return '{}-{}-{}'.format(
year,
month if len(str(month)) == 2 else '0{}'.format(month),
day if len(str(day)) == 2 else '0{}'.format(day)
)
def gregorian_date_to_str_1(year, month, day):
"""
將公元日期轉換成字串,year佔4位,month佔2位,day佔2位,位數不足補0
:param year: 年份,例如2017
:param month: 月份,例如8或者08
:param day: 天,例如12或者02或者2
:return: 返回位數固定的字串,不帶-,例如20170822
"""
return '{}{}{}'.format(
year,
month if len(str(month)) == 2 else '0{}'.format(month),
day if len(str(day)) == 2 else '0{}'.format(day)
)
def get_element_from_date_str(date_str):
"""獲取一個日期字串的年月日"""
return date_str[0:4], date_str[4:6], date_str[6:8]
def is_valid_date(date_str):
"""判斷是否是一個有效的日期字串"""
try:
time.strptime(date_str, '%Y%m%d')
return True
except ValueError:
return False
def get_latter_1_day_str(date_str):
"""
獲取data_str後一天的日期字串
:param date_str: 指定日期字串
:return: 返回指定日期字串後一天的日期字串
"""
dt = datetime.datetime.strptime(date_str, '%Y%m%d')
one_day = datetime.timedelta(days=1)
former_day = dt + one_day
return former_day.strftime('%Y%m%d')
def get_latter_n_day_str(date_str, n):
"""
獲取data_str後n天的日期字串
:param date_str: 指定日期字串
:return: 返回指定日期字串後n天的日期字串
"""
dt = datetime.datetime.strptime(date_str, '%Y%m%d')
one_day = datetime.timedelta(days=days)
former_day = dt + one_day
return former_day.strftime('%Y%m%d')
def get_yesterday_str():
"""
獲取昨天的日期字串
:return: 返回昨天日期字串
"""
today = datetime.date.today()
one_day = datetime.timedelta(days=1)
yesterday = today - one_day
return yesterday.strftime('%Y%m%d')
def get_former_1_day_str(date_str):
"""
獲取data_str前一天的日期字串
:param date_str: 指定日期字串
:return: 返回指定日期字串前一天的日期字串
"""
dt = datetime.datetime.strptime(date_str, '%Y%m%d')
one_day = datetime.timedelta(days=1)
former_day = dt - one_day
return former_day.strftime('%Y%m%d')
def get_former_n_day_str(date_str, n):
"""
獲取data_str前n天的日期字串
:param date_str: 指定日期字串
:param n: number of day
:return: 返回指定日期字串前n天的日期字串
"""
dt = datetime.datetime.strptime(date_str, '%Y%m%d')
n_day = datetime.timedelta(days=n)
former_n_day = dt - n_day
return former_n_day.strftime('%Y%m%d')
def get_universal_time():
"""
獲取當前時間
:return: 返回當前時間,格式:2017-08-29 02:43:19
"""
t = time.gmtime()
time_tuple = (t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)
dt = datetime.datetime(*time_tuple)
return dt.strftime('%Y-%m-%d %H:%M:%S')
def datetime_to_gregorian_seconds(dt):
"""
獲取從公元0年1月1日開始到當天0點所經過的秒數
:param dt: datetime.datetime型別
:return: 返回從公元0年1月1日開始到當天0點所經過的秒數
"""
d = dt.date()
t = dt.time()
# toordinal 從1年1月1日開始, erlang 的datetime_to_gregorian_seconds和date_to_gregorian_days從0年1月1日開始
# 當天不算所以需要減1天
return (d.toordinal() + 365 - 1) * 86400 + time_to_second(t.hour, t.minute, t.second)
def time_to_second(time_h, time_m, time_s):
"""
根據給定的time_h, time_m, time_s計算當天已過去的時間,秒為單位
:param time_h: 小時
:param time_m: 分
:param time_s: 秒
:return: 返回計算的second
"""
return int(time_h) * 3600 + int(time_m) * 60 + int(time_s)
def utc_time_to_second(utc_time):
"""
根據給定的utc_time計算當天已過去的時間,秒為單位
:param utc_time: utc時間戳,類似1464830584
:return: 返回計算的second
"""
t = datetime.datetime.fromtimestamp(int(utc_time))
return t.hour * 3600 + t.minute * 60 + t.second
def get_today_start_time():
"""獲取當天開始時間"""
dt = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
return dt.strftime('%Y-%m-%d %H:%M:%S')
def get_today_end_time():
"""獲取當天結束時間"""
dt = datetime.datetime.combine(datetime.date.today(), datetime.time.max)
return dt.strftime('%Y-%m-%d %H:%M:%S')
def get_final_day_of_current_week():
"""獲取本週最後一天:周天"""
today = datetime.date.today()
sunday = today + datetime.timedelta(6 - today.weekday())
return sunday.strftime('%Y-%m-%d')
def get_final_day_of_current_month():
"""獲取本月最後一天"""
today = datetime.date.today()
_, last_day_num = calendar.monthrange(today.year, today.month)
last_day = datetime.date(today.year, today.month, last_day_num)
return last_day.strftime('%Y-%m-%d')
def get_final_day_of_last_month():
"""獲取上月最後一天,可能會跨年,需要用timedelta"""
today = datetime.date.today()
first = datetime.date(day=1, month=today.month, year=today.year)
final_day_of_last_month = first - datetime.timedelta(days=1)
return final_day_of_last_month.strftime('%Y-%m-%d')
def get_final_day_of_current_month(year, month):
"""獲取指定年指定月的最後一天"""
_, last_day_num = calendar.monthrange(year, month)
return last_day_num
# last_day = datetime.date(year, month, last_day_num)
# return last_day.strftime('%Y-%m-%d')
記得幫我點贊哦!
念念不忘,必有迴響,小夥伴們幫我點個贊吧,非常感謝。
> 我是職場亮哥,YY高階軟體工程師、四年工作經驗,拒絕鹹魚爭當龍頭的斜槓程式設計師。
>
> 聽我說,進步多,程式人生一把梭
>
> 如果有幸能幫到你,請幫我點個【贊】,給個關注,如果能順帶評論給個鼓勵,將不勝感激。
本人所有文章、回答都與版權保護平臺有合作,著作權歸職場亮哥所有,未經授權,轉載必究!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2826643/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python時間處理常用模組及用法詳解!Python
- python 時間相關模組Python
- Python常用時間模組有哪些?這幾個很關鍵!Python
- python logging模組使用總結Python
- Python基礎(九) 常用模組彙總Python
- python時間模組time和datetimePython
- python常用標準庫(os系統模組、shutil檔案操作模組)Python
- Python中使用dateutil模組解析時間Python
- 常用Python模組3Python
- ?Git 常用操作總結Git
- python中關於時間和日期函式的常用計算總結Python函式
- python–模組之os操作檔案模組Python
- Python 操作 Excel,總有一個模組適合自己PythonExcel
- Python常用模組(random隨機模組&json序列化模組)Pythonrandom隨機JSON
- Python 常用系統模組整理Python
- Python學習之常用模組Python
- Python中常用模組有哪些?Python
- javascript中字串常用操作總結JavaScript字串
- python常用模組補充hashlib configparser logging,subprocess模組Python
- Python中的時間處理大總結Python
- Python集合操作總結Python
- Python OS模組操作檔案Python
- JavaScript 模組化總結JavaScript
- node模組總結(初步)
- Python種匯入模組的三種方式總結Python
- Python字串常用方法總結Python字串
- D19-時間模組
- python 基礎筆記——常用模組Python筆記
- Python基礎:常用系統模組Python
- python常用模組之paramiko與sshPython
- python之排序操作及heapq模組Python排序
- Python中常用模組有哪些?Python基礎教程Python
- Python爬蟲:流程框架和常用模組Python爬蟲框架
- 2020.10.07【普及組】模擬賽C組 總結
- 上傳模組開發總結
- 評論模組開發總結
- 2020.10.31【NOIP提高A組】模擬總結
- 前端模組化簡單總結前端