# update: 2021-10-21 """ %a 星期的简写。如 星期三为Web %A 星期的全写。如 星期三为Wednesday %b 月份的简写。如4月份为Apr %B月份的全写。如4月份为April %c: 日期时间的字符串表示。(如: 04/07/10 10:43:39) %d: 日在这个月中的天数(是这个月的第几天) %f: 微秒(范围[0,999999]) %H: 小时(24小时制,[0, 23]) %I: 小时(12小时制,[0, 11]) %j: 日在年中的天数 [001,366](是当年的第几天) %m: 月份([01,12]) %M: 分钟([00,59]) %p: AM或者PM %S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~) %U: 周在当年的周数当年的第几周),星期天作为周的第一天 %w: 今天在这周的天数,范围为[0, 6],6表示星期天 %W: 周在当年的周数(是当年的第几周),星期一作为周的第一天 %x: 日期字符串(如:04/07/10) %X: 时间字符串(如:10:43:39) %y: 2个数字表示的年份 %Y: 4个数字表示的年份 %z: 与utc时间的间隔 (如果是本地时间,返回空字符串) %Z: 时区名称(如果是本地时间,返回空字符串) """ import datetime import time UTC_PATTERN = '%Y-%m-%dT%H:%M:%S.%fZ' LOCAL_PATTERN = '%Y-%m-%d %H:%M:%S' def string_to_dt(string, pattern='%Y-%m-%d'): """ 字符串转为日期 """ return datetime.datetime.strptime(string, pattern) def dt_to_string(date, pattern='%Y-%m-%d %H:%M:%S'): """ 日期转为字符串 """ return date.strftime(pattern) def string_to_ts(string, pattern='%Y-%m-%dT%H:%M:%S.%f'): """ 日期转为时间戳 Example: string_to_ts(2015-01-01) 1420041600 """ return int(time.mktime(time.strptime(string, pattern))) def ts_to_string(int_time, pattern='%Y-%m-%dT%H:%M:%S.%f'): """ 时间戳->字符串 """ return time.strftime(pattern, time.localtime(int_time)) def now_string(pattern='%Y-%m-%d %H:%M:%S'): """ 获取当前时间戳 """ return datetime.datetime.now().strftime(pattern) def iso_string_to_ts(string): """ iso标准时间转时间戳 """ return time.mktime(time.strptime(string, '%Y-%m-%dT%H:%M:%S.%f')) def now_iso_string(): """ iso标准时间 """ return datetime.datetime.now().isoformat('T') def now_utc_iso_string(): """ iso标准时间 """ return datetime.datetime.utcnow().isoformat('T') def now_utc_dt(): """ 获取当前utc时间 """ return datetime.datetime.utcnow() def now_dt(): """ 获取当前时间 Example: now_dt() datetime.datetime(2020, 5, 16, 6, 15, 7, 39060) """ return datetime.datetime.now() def now_ts(unit='s', ndigits=0): """ 获取当前时间戳 unit: 单位 (s: 秒 ms: 毫秒) ndigits: 小数点位数 """ unit_dict = { 'ms': 1, 's': 0, } ts = time.time() if unit_dict.get(unit): ts = ts * (1000 ** unit_dict.get(unit)) if ndigits: return round(ts, ndigits) return int(ts) def today_ts(): """ 获取当日时间戳 """ today_dt = datetime.date.today() return int(time.mktime(today_dt.timetuple())) def utc_to_beijing(utc_string, pattern='%Y-%m-%dT%H:%M:%S.%fZ'): """UTC时间转北京时间(+8:00)""" utc_ts = string_to_ts(utc_string, pattern=pattern) beijing_ts = utc_ts + (3600 * 8) return ts_to_string(beijing_ts, pattern='%Y-%m-%d %H:%M:%S') def beijing_to_utc(beijing_string, pattern='%Y-%m-%d %H:%M:%S'): """本地时间转UTC时间(-8:00)""" beijing_ts = string_to_ts(beijing_string, pattern=pattern) utc_ts = beijing_ts - (3600 * 8) return ts_to_string(utc_ts, pattern='%Y-%m-%dT%H:%M:%S.%fZ') if __name__ == '__main__': # t = '2020-08-02T01:00:00.000Z' # print(utc_to_beijing(t)) # t = "2020-08-02T16:00:00.000Z" # d = string_to_dt(t, "%Y-%m-%dT%H:%M:%S.%fZ") # print(d) # print(datetime.datetime.now() + datetime.timedelta(minutes=-1)).strftime("%Y-%m-%d %H:%M:%S") # print(today_ts()) # print(string_to_ts('2021-03-25-09-53-39', '%Y-%m-%d-%H-%M-%S')) # print(now_ts(unit='ms')) # print(now_ts(unit='s')) print(now_ts()) # out = string_to_ts('2021-07-16', '%Y-%m-%d') # print(out) # print(string_to_ts('2022-06-01 22:00:00', pattern='%Y-%m-%d %H:%M:%S')) # 1654092000