時間モジュールの一般的な操作は、次の機能として要約されます。
#! /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):"""
AD0から始まる秒数をdatetimeの文字列形式に変換します
: param seconds:AD0からの秒数
: return:日時の文字列形式
"""
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 #日時は1970年からであるため、計算時に1970returnを差し引く必要があります。'{}-{}'.format(str(year), rest)
def gregorian_date_to_str(year, month, day):"""
ADの日付を文字列に変換します。年は4桁、月は2桁、日は2桁、桁数が不足している場合は0です。:param year:年、例:2017:param month:8や08などの月:param day:12、02、2などの日:return:2017など、固定桁数の文字列を返します-08-22"""
return'{}-{}-{}'.format(
year,
month iflen(str(month))==2else'0{}'.format(month),
day iflen(str(day))==2else'0{}'.format(day))
def gregorian_date_to_str_1(year, month, day):"""
ADの日付を文字列に変換します。年は4桁、月は2桁、日は2桁、桁数が不足している場合は0です。:param year:年、例:2017:param month:8や08などの月:param day:12、02、2などの日:return:固定桁数の文字列を返します。-、20170822など"""
return'{}{}{}'.format(
year,
month iflen(str(month))==2else'0{}'.format(month),
day iflen(str(day))==2else'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):"""
データを取得する_strの翌日の日付文字列
: param date_str:日付文字列を指定します
: return:指定した日付文字列の1日後の日付文字列を返します
"""
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):"""
データを取得する_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):"""
データを取得する_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):"""
データを取得する_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-2902: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):"""
当日の1月1日0時から0時までの経過秒数を取得します
: param dt: datetime.日時タイプ
: return:その日の1月1日0時からの経過秒数を返します
"""
d = dt.date()
t = dt.time()
# 1月1日からの通常,erlangの日時_to_gregorian_秒と日付_to_gregorian_日は1月1日から始まります0
# 日はカウントされないため、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):"""
与えられた時間によると_h, time_m, time_■1日の経過時間を秒単位で計算します
: param time_h:時間
: param time_m:分
: param time_s:2番目
: return:計算された秒を返します
"""
returnint(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:計算された秒を返します
"""
t = datetime.datetime.fromtimestamp(int(utc_time))return t.hour *3600+ t.minute *60+ t.second
def get_today_start_time():"""1日の開始時刻を取得する"""
dt = datetime.datetime.combine(datetime.date.today(), datetime.time.min)return dt.strftime('%Y-%m-%d %H:%M:%S')
def get_today_end_time():"""1日の終了時刻を取得する"""
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')
Recommended Posts