python有兩個和時間相關的模塊,datetime和timepython
datetime模塊下有四個類ide
查看和設置日期ui
>>> d = datetime.date.today() >>> d datetime.date(2017, 4, 30) >>> d.year, d.month, d.day # 取年、月、日 (2017, 4, 30) >>> d.weekday() # 星期幾,從0開始算 6 >>> d.isoweekday() # 星期幾,從1開始算 7 >>> datetime.date(2017, 4, 17) # 設置日期 datetime.date(2017, 4, 17)
構造時間spa
Help on class time in module datetime: class time(builtins.object) | time([hour[, minute[, second[, microsecond[, tzinfo]]]]]) --> a time object | | All arguments are optional. tzinfo may be None, or an instance of | a tzinfo subclass. The remaining arguments may be ints. | | Methods defined here: | | __eq__(self, value, /) | Return self==value. | | __format__(...) | Formats self with strftime. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __gt__(self, value, /) | Return self>value. | | __hash__(self, /) | Return hash(self). | | __le__(self, value, /) | Return self<=value. | | __lt__(self, value, /) | Return self<value. | | __ne__(self, value, /) | Return self!=value. | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | __reduce__(...) | __reduce__() -> (cls, state) | | __reduce_ex__(...) | __reduce_ex__(proto) -> (cls, state) | | __repr__(self, /) | Return repr(self). | | __str__(self, /) | Return str(self). | | dst(...) | Return self.tzinfo.dst(self). | | isoformat(...) | Return string in ISO 8601 format, [HH[:MM[:SS[.mmm[uuu]]]]][+HH:MM]. | | timespec specifies what components of the time to include. | | replace(...) | Return time with new specified fields. | | strftime(...) | format -> strftime() style string. | | tzname(...) | Return self.tzinfo.tzname(self). | | utcoffset(...) | Return self.tzinfo.utcoffset(self). | | ---------------------------------------------------------------------- | Data descriptors defined here: | | fold | | hour | | microsecond | | minute | | second | | tzinfo | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | max = datetime.time(23, 59, 59, 999999) | | min = datetime.time(0, 0) | | resolution = datetime.timedelta(0, 0, 1) [Finished in 0.2s]
>>> datetime.time(15, 30, 22) datetime.time(15, 30, 22) >>> date = datetime.time(15, 30, 22) # 時分秒 >>> date.hour, date.minute, date.second (15, 30, 22) >>> date.second 22
datetime是date和time二者功能的結合code
class datetime(date) | datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) | | The year, month and day arguments are required. tzinfo may be None, or an | instance of a tzinfo subclass. The remaining arguments may be ints. | | Method resolution order: | datetime | date | builtins.object | | Methods defined here: | | __add__(self, value, /) | Return self+value. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __gt__(self, value, /) | Return self>value. | | __hash__(self, /) | Return hash(self). | | __le__(self, value, /) | Return self<=value. | | __lt__(self, value, /) | Return self<value. | | __ne__(self, value, /) | Return self!=value. | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | __radd__(self, value, /) | Return value+self. | | __reduce__(...) | __reduce__() -> (cls, state) | | __reduce_ex__(...) | __reduce_ex__(proto) -> (cls, state) | | __repr__(self, /) | Return repr(self). | | __rsub__(self, value, /) | Return value-self. | | __str__(self, /) | Return str(self). | | __sub__(self, value, /) | Return self-value. | | astimezone(...) | tz -> convert to local time in new timezone tz | | combine(...) from builtins.type | date, time -> datetime with same date and time fields | | ctime(...) | Return ctime() style string. | | date(...) | Return date object with same year, month and day. | | dst(...) | Return self.tzinfo.dst(self). | | fromtimestamp(...) from builtins.type | timestamp[, tz] -> tz's local time from POSIX timestamp. | | isoformat(...) | [sep] -> string in ISO 8601 format, YYYY-MM-DDT[HH[:MM[:SS[.mmm[uuu]]]]][+HH:MM]. | sep is used to separate the year from the time, and defaults to 'T'. | timespec specifies what components of the time to include (allowed values are 'auto', 'hours', 'minutes', 'seconds', 'milliseconds', and 'microseconds'). | | now(tz=None) from builtins.type | Returns new datetime object representing current time local to tz. | | tz | Timezone object. | | If no tz is specified, uses local timezone. | | replace(...) | Return datetime with new specified fields. | | strptime(...) from builtins.type | string, format -> new datetime parsed from a string (like time.strptime()). | | time(...) | Return time object with same time but with tzinfo=None. | | timestamp(...) | Return POSIX timestamp as float. | | timetuple(...) | Return time tuple, compatible with time.localtime(). | | timetz(...) | Return time object with same time and tzinfo. | | tzname(...) | Return self.tzinfo.tzname(self). | | utcfromtimestamp(...) from builtins.type | Construct a naive UTC datetime from a POSIX timestamp. | | utcnow(...) from builtins.type | Return a new datetime representing UTC day and time. | | utcoffset(...) | Return self.tzinfo.utcoffset(self). | | utctimetuple(...) | Return UTC time tuple, compatible with time.localtime(). | | ---------------------------------------------------------------------- | Data descriptors defined here: | | fold | | hour | | microsecond | | minute | | second | | tzinfo | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | max = datetime.datetime(9999, 12, 31, 23, 59, 59, 999999) | | min = datetime.datetime(1, 1, 1, 0, 0) | | resolution = datetime.timedelta(0, 0, 1) | | ---------------------------------------------------------------------- | Methods inherited from date: | | __format__(...) | Formats self with strftime. | | fromordinal(...) from builtins.type | int -> date corresponding to a proleptic Gregorian ordinal. | | isocalendar(...) | Return a 3-tuple containing ISO year, week number, and weekday. | | isoweekday(...) | Return the day of the week represented by the date. | Monday == 1 ... Sunday == 7 | | strftime(...) | format -> strftime() style string. | | today(...) from builtins.type | Current date or datetime: same as self.__class__.fromtimestamp(time.time()). | | toordinal(...) | Return proleptic Gregorian ordinal. January 1 of year 1 is day 1. | | weekday(...) | Return the day of the week represented by the date. | Monday == 0 ... Sunday == 6 | | ---------------------------------------------------------------------- | Data descriptors inherited from date: | | day | | month | | year
>>> now = datetime.datetime.now() >>> now datetime.datetime(2017, 4, 27, 23, 4, 8, 142947) # 年、月、日、時、分、秒、微秒 >>> now.year 2017 >>> now.day 27 >>> now.month 4 >>> now.hour 23
時間差,日期和時間能夠相加減,獲得一個timedelta對象component
>>> birthday = datetime.date(1991, 12, 10) >>> now = datetime.date.now() >>> today - birthday datetime.timedelta(9273)>>> >>> datetime.datetime.now() - datetime.datetime(1991,12,10) datetime.timedelta(9273, 15500, 135084)
將時間格式轉換成str類型orm
>>> datetime.datetime.now().strftime('%Y/%m/%d') '2017/04/27' >>> datetime.datetime.now().strftime('%Y-%m-%d') '2017-04-27' >>> datetime.date.today().strftime('%Y/%m/%d') '2017/04/27' >>> datetime.datetime.now().strftime('%Y%m%d%H%M%S') '20170427223159' >>> datetime.time(18,20,31).strftime('%H-%M-%S') '18-20-31' >>> datetime.time(18,20,31).strftime('%H:%M:%S') '18:20:31'
將str轉換成日期和時間類型對象
>>> s = '2018-09-22' >>> datetime.datetime.strptime(s, '%Y-%m-%d') datetime.datetime(2018, 9, 22, 0, 0) >>> s = '2018-09-22-17-22' >>> datetime.datetime.strptime(s, '%Y-%m-%d-%H-%M') datetime.datetime(2018, 9, 22, 17, 22)
時間差,有這樣的需求,要獲得先後多少天、先後多少分鐘blog
# 3天前 >>> (datetime.datetime.now() - datetime.timedelta(days=3)).strftime('%Y%m%d') '20170424' # 3天后 >>> (datetime.datetime.now() + datetime.timedelta(days=3)).strftime('%Y%m%d') '20170501' # 15分鐘前 >>> (datetime.datetime.now() - datetime.timedelta(seconds=900)).strftime('%Y%m%d%H%M%S') '20170428005835' # 15分鐘後 >>> (datetime.datetime.now() + datetime.timedelta(seconds=900)).strftime('%Y%m%d%H%M%S') '20170428005835'
好比輸入你的生日,算你來了這個世界上有多少天ip
>>> birthday = datetime.date(1991, 12, 10) >>> now = datetime.date.today() >>> result = now - birthday >>> result.days 9273
我以爲功能上和datetime差很少
>>> time.localtime() time.struct_time(tm_year=2017, tm_mon=4, tm_mday=30, tm_hour=4, tm_min=45, tm_sec=38, tm_wday=6, tm_yday=120, tm_isdst=0) >>> time.sleep(1) # 等待多少秒 >>> time.strftime('%Y-%m-%d %H:%M:%S') # 時間格式化 '2017-04-30 04:46:21' >>> time.ctime() 'Sun Apr 30 17:46:02 2017'