[TOC]前端
import time time.time() Out[3]: 1561107970.0175698 # 時間戳 time.localtime() Out[4]: time.struct_time(tm_year=2019, tm_mon=6, tm_mday=21, tm_hour=17, tm_min=6, tm_sec=20, tm_wday=4, tm_yday=172, tm_isdst=0) # 本地時間帶格式 time.struct_time time.gmtime() Out[5]: time.struct_time(tm_year=2019, tm_mon=6, tm_mday=21, tm_hour=9, tm_min=6, tm_sec=35, tm_wday=4, tm_yday=172, tm_isdst=0)# UTC時間帶格式 time.struct_time time.localtime().tm_yday Out[6]: 172 # time.struct_time能夠獲取你想要的東西
time_stamp = time.time() local_struct_time = time.localtime(time_stamp) # 時間戳轉struct time time.mktime(local_struct_time) Out[13]: 1561108315.0 # struct time 轉時間戳
time.strftime("%Y-%m-%d, %H:%M:%S, %w", local_struct_time) Out[16]: '2019-06-21, 17:11:55, 5' ================================================================================== time.strptime('2019-06-21, 17:11:55, 5', "%Y-%m-%d, %H:%M:%S, %w") Out[17]: time.struct_time(tm_year=2019, tm_mon=6, tm_mday=21, tm_hour=17, tm_min=11, tm_sec=55, tm_wday=4, tm_yday=172, tm_isdst=-1)
time.strftime("%Y-%m-%d, %H:%M:%S, %w", time.time()) Traceback (most recent call last): File "C:\Users\zhicfeng\Envs\etisalat\lib\site-packages\IPython\core\interactiveshell.py", line 2910, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-15-fa1c7b40ca19>", line 1, in <module> time.strftime("%Y-%m-%d, %H:%M:%S, %w", time.time()) TypeError: Tuple or struct_time argument required
The time module is written in C, and is mostly interface to low-level operating system functions. The datetime module is written in Python.
類關係圖python
object timedelta # 1. 日期和時間差值計算 2. timezone的第一個參數 tzinfo # 抽象類 timezone # datetime會用到 time # 沒啥大用 date # 沒啥大用 datetime # 經常使用
class timedelta: def __new__(cls, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0): pass ======================================================================= dongbaqu = timedelta(hours=8) # 東八區 timezone(dongbaqu) datetime.datetime.now(timezone.utc) # utc時間 Out[39]: datetime.datetime(2019, 6, 21, 9, 46, 30, 593920, tzinfo=datetime.timezone.utc) datetime.datetime.now(timezone(dongbaqu)) # 東八區時間 Out[40]: datetime.datetime(2019, 6, 21, 17, 46, 34, 817637, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))
datetime.datetime.now(timezone(dongbaqu)).year Out[41]: 2019 ======================================================================= datetime.datetime(2018,12,12,12,12,12) Out[51]: datetime.datetime(2018, 12, 12, 12, 12, 12)
datetime.datetime.now(timezone(dongbaqu)).strftime('%a, %d %b %Y %H:%M:%S +0000') Out[42]: 'Fri, 21 Jun 2019 17:49:35 +0000' datetime.datetime.strptime('Fri, 21 Jun 2019 17:49:35 +0000', '%a, %d %b %Y %H:%M:%S +0000') Out[44]: datetime.datetime(2019, 6, 21, 17, 49, 35)
datetime.datetime.now().timestamp() Out[49]: 1561110815.027726 datetime.datetime.fromtimestamp(1561110815.027726) Out[52]: datetime.datetime(2019, 6, 21, 17, 53, 35, 27726)
datetime.datetime(2019, 6, 21, 17, 53, 35, 27726) + datetime.timedelta(hours=25) Out[54]: datetime.datetime(2019, 6, 22, 18, 53, 35, 27726)
from django.utils import timezone
django 中提供了 timezoneshell
django settings 中提供了 USE_TZ, TIMEZONE等參數.數據庫
我的不建議使用django中的timezone -- 會讓代碼變亂. 這些信息是給框架使用的. -- 譬如 serializers.DateTimeField
django
後端和數據庫統一使用UTC計時,並將時區傳給前端.由前端負責顯示.後端
datetime.datetime.now(timezone.utc) # utc時間 Out[39]: datetime.datetime(2019, 6, 21, 9, 46, 30, 593920, tzinfo=datetime.timezone.utc)