1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
|
import datetime import time
DATE_PATTERN_YMD_HMS = "%Y-%m-%d %H:%M:%S" DATE_PATTERN_YMD = "%Y-%m-%d"
def stamp_to_datetime(stamp): """ 将一个时间戳转化为datetime """ ltime = time.localtime(stamp) time_str = time.strftime("%Y,%m,%d,%H,%M,%S", ltime).split(',') time_int = [int(i) for i in time_str] return datetime.datetime(*time_int)
def datetime_to_stamp(dt): """ 将一个datetime转化为时间戳 """ return int(time.mktime(dt.timetuple()))
def stamp_to_date_str(stamp, pattern): """ 将一个时间戳转化为时间字符串 :return: """ time_array = time.localtime(stamp) return time.strftime(pattern, time_array)
def date_str_to_stamp(date_str, pattern): """ 将一个时间字符串转化为时间戳 :return: """ time_array = time.strptime(date_str, pattern) return int(time.mktime(time_array))
def datetime_to_date_str(dt, pattern): """ 将一个datetime转化为时间字符串 :return: """ return dt.strptime(pattern)
def date_str_to_datetime(date_str, pattern): """ 将一个时间字符串转化为datetime :return: """ return datetime.datetime.strptime(date_str, pattern)
def get_now_datetime(): """ 获得当前datetime :return: """ return datetime.datetime.now()
def get_now_stamp(): """ 获得当前时间戳 :return: """ return datetime_to_stamp(get_now_datetime())
def get_now_date_str(pattern): """ 获得当前时间字符串 :return: """ return datetime_to_date_str(get_now_datetime(), pattern)
def add_day(dt, days): """ 增加x天 :param date_str: :param day: :return: """ return dt + datetime.timedelta(days=days)
def add_minute(dt, minutes): """ 增加x分钟 :return: """ return dt + datetime.timedelta(minutes=minutes)
def add_second(dt, seconds): """ 增加x秒 :return: """ return dt + datetime.timedelta(seconds=seconds)
def deducti_day(date_str, days): """ 减少x天 :param date_str: :param day: :return: """ return add_day(date_str, -1*days)
def deducti_minute(date_str, minutes): """ 减少x分钟 :return: """ return add_minute(date_str, -1*minutes)
def deducti_second(date_str, seconds): """ 减少x秒 :return: """ return add_second(date_str, -1*seconds)
def is_expire_day(dt): """ 是否已经过期 :return: """ return dt < get_now_datetime()
def is_same_day(dt1, dt2): """ 是否是同一天 """ return dt1.year == dt2.year and dt1.month == dt2.month and dt1.day == dt2.day
def adjust_day_start(dt): """ 调整到一天的开始 :return: """ return dt.replace(hour=0, minute=0, second=0)
def adjust_day_end(dt): """ 调整到一天的结束 :return: """ return dt.replace(hour=23, minute=59, second=59)
def get_time_difference_sec(dt1, dt2): """ 返回时间差(秒) :return: """ return (dt2 - dt1).seconds
def first_day_of_month(): """ 获取本月第一天 :return: """ return datetime.date.today() - datetime.timedelta(days=datetime.datetime.now().day - 1)
def is_weekday(dt): """ 是否是周末,星期六(返回5),星期天(返回6) :return: """ return dt.weekday() >= 5
def is_valid_date(date_str, pattern): """ 判断是否有效的日期格式 :return: """ try: date_str_to_stamp(date_str, pattern) except: return False else: return True
def isleap(dt): """ 判断是否是闰年 :return: """ return (dt.year % 4 == 0) and (dt.year % 100 != 0) or (dt.year % 400 == 0)
if __name__ == "__main__": stamp = date_str_to_stamp("2012-12-23 23:56:59", DATE_PATTERN_YMD_HMS) print(stamp_to_date_str(stamp, DATE_PATTERN_YMD_HMS))
|