《自拍教程39》Python adb一鍵同步北京時間

研發階段的Android車機,還不支持從gps或儀表同步互聯網時間,
需要手動設置系統時間。 由於任何涉及在線業務,都有時間戳的概念,
如果和遠程雲端服務器上的時間相差剩餘,則服務器端不會返回正常數據。
比如你的車載墨跡天氣App,如果你車機時間是:1970-01-01 08:00:00 ,
則肯定無法請求到最新的天氣信息,因爲你發起請求,服務器直接拒絕,
時間戳相差太大,除非你更新到當前北京時間。


準備階段
  1. adb shell date -s +時間,可以設置Android終端的系統時間爲北京時間。
    比如: adb shell date -s 20200307.165053
  2. 電腦端的時間一般就是北京時間,所以可以直接獲取電腦端的時間,然後設置爲車機端的時間。
  3. 時間相關的模塊,可以用到time模塊或者datetime模塊,我一般建議用datetime模塊,
    因爲datetime模塊相對功能較爲豐富。

Python批處理腳本模式
# coding=utf-8
import os
import datetime

now_time = datetime.datetime.now()
now_time = now_time.strftime("%Y%m%d.%H%M%S")
os.system("adb shell \"date -s %s\"" % now_time)
print("車機時間已經成功同步到了北京時間!")
os.sytem("pause")

更優雅地引用datetime模塊

以上datetime模塊的引用,
其實不符合日常規範,我們一般會寫成:

from datetime import datetime

now_time = datetime.now()

一般來說,在引用區域儘量引用到最底部,即最後一個模塊或者最後一個類,
在代碼調用區域,只用調用最後一個模塊或者最後一個類,
以上from datetime import datetime語句, 第一個datetime是模塊名,
第二個datetime是類名,我們調用了datatime的靜態方法.now()函數,
這塊如果理解不是很清楚,可以查看datetime.py的源代碼。


適當地減少變量

now_time = datetime.now()
now_time = now_time.strftime("%Y%m%d.%H%M%S")
其實可以寫成一句:
now_time = datetime.now().strftime("%Y%m%d.%H%M%S")
以適當地減少中間變量傳遞,讓代碼更加精煉。

Python面向過程函數形式

把代碼塊打包封裝一下, 並調用就可以了。

# coding=utf-8
import os
from datetime import datetime

def set_time():
    now_time = datetime.now().strftime("%Y%m%d.%H%M%S")
    os.system("adb shell \"date -s %s\"" % now_time)
	print("車機時間已經成功同步到了北京時間!")

set_time()
os.system("pause")

Python面向對象類的形式

1.以"一切皆可歸類"的思想, 先抽象化出一個類來,
類名一般建議用"名詞", 所以我們命名爲"TimeSetter",
代表時間設置器, 且一般要駝峯式(首字母大寫)來規範類的命名。
2. 養成良好的類的初始化(__init__)的習慣, 初始化過程中, 可以pass(什麼都不做)
3. TimeSetter 類, 目前只需要一個設置時間的函數(動作功能)就足夠了,
函數的命名一般建議用"動詞", 所以我們命名爲: “set_time” .
4類是一個抽象的事物, 必須實例化成具體的對象後,
才能進行調用, 所以我們實例化並命名成了t_obj, 表明是一個對象.
5.實例化成具體對象後, 對象就可以調用set_time這個函數了.

# coding=utf-8
import os
from datetime import datetime

def TimeSetter():
    def __init__(self):
        pass

    def set_time(self):
        now_time = datetime.now().strftime("%Y%m%d.%H%M%S")
        os.system("adb shell \"date -s %s\"" % now_time)
        print("車機時間已經成功同步到了北京時間!")

t_obj = TimeSetter()
t_obj.set_time()
os.system("pause")

代碼運行方式

確保Android車機設備通過USB線與電腦連接了,adb設備有效連接,
以上代碼的3種實現形式都可以直接運行,
比如保存爲set_time.py並放在桌面,
每次需要同步終端時間的時候,雙擊運行set_time.py.py,
應該可以在Android車機終端屏幕上看到時間已經成功更新成北京時間了。

更多更好的原創文章,請訪問官方網站:www.zipython.com
自拍教程(自動化測試Python教程,武散人編著)
原文鏈接:https://www.zipython.com/#/detail?id=2bae06141b004ab0b55ce9783777a30b
也可關注“武散人”微信訂閱號,隨時接受文章推送。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章