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
- ?Git 常用操作總結Git
- DataTable常用操作總結
- python操作字典型別的常用方法總結Python型別
- Python時間格式歸納總結Python
- SAP MM模組常用表總結
- python中關於時間和日期函式的常用計算總結Python函式
- Python常用時間模組有哪些?這幾個很關鍵!Python
- python 時間相關模組Python
- javascript中字串常用操作總結JavaScript字串
- JavaScript 操作 DOM 常用 API 總結JavaScriptAPI
- Javascript操作DOM常用API總結JavaScriptAPI
- Python中的時間處理大總結Python
- Python基礎(九) 常用模組彙總Python
- Python集合操作總結Python
- Java 常用字串操作總結Java字串
- informix常用時間運算和操作方式ORM
- js時間小總結JS
- Python字串常用方法總結Python字串
- Python中使用dateutil模組解析時間Python
- python時間模組time和datetimePython
- python常用標準庫(os系統模組、shutil檔案操作模組)Python
- 常用的PB時間函式彙總函式
- Python 常用模組Python
- python os模組功能和方法總結Python
- linux下svn的常用操作命令總結Linux
- python,時間加減,時間計算,時間格式化,時間提取彙總Python
- Python中基礎的時間操作Python
- 課時6:Python之常用操作符Python
- 常用Python模組3Python
- ORACLE臨時表空間總結Oracle
- SQL時間函式總結(二)SQL函式
- 【總結】Python常用函式有哪些?Python函式
- python常用函式年初大總結Python函式
- 常用的 Python 爬蟲技巧總結Python爬蟲
- python logging模組使用總結Python