1. 程式人生 > 實用技巧 >【二分圖最小點覆蓋】poj 1325 Machine Schedule

【二分圖最小點覆蓋】poj 1325 Machine Schedule

import datetime
a = str(datetime.datetime.now().strftime('%y-%m-%d %H:%M:%S')) + ' 星期 ' + str(datetime.datetime.now().isoweekday())
print(a)  

# 結果:20-09-18 19:32:08 星期 5
import datetime
a = str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + ' 星期 ' + str(datetime.datetime.now().isoweekday())
print(a) # 結果:2020-09-18 19:32:08 星期 5
import datetime

d = datetime.datetime.now().strftime('%F %T')
print(d)
# 結果:2020-09-21 16:13:18
import time

d = time.strftime('%Y-%m-%d %H:%M:%S ',time.localtime(time.time()))
print(d)
# 結果:2020-09-21 16:13:18

Python提供了datetime、time和 calendar 模組用來處理日期和時間,時間間隔是以秒為單位的浮點數.每個時間戳都是自1970年1月1日來算.

Datetime

datetime在python中是用來處理時間的一個模組,datetime模組下又包含了幾個類

類名
功能
date
日期物件,常用的屬性有year, month, day
time
時間物件
datetime
日期時間物件,常用的屬性有hour, minute, second, microsecond
timedelta
時間間隔,即兩個時間點之間的長度
datetime_CAPI
日期時間物件C語言介面
tzinfo
時區資訊物件


from datetime import
date from datetime import datetime from datetime import timedelta # 計算兩個日期相差多少天 d1 = date(2018, 10, 18) d2 = date(2017, 12, 31) print("(2018, 10, 18)與(2017, 12, 31)相差:", (d1 - d2).days, "天!") # (2018, 10, 18)與(2017, 12, 31)相差: 291 天! # 獲取兩個日期時間的時間差 time1 = datetime(2019, 1, 13, 12, 0, 0) time2 = datetime.now() differtime = (time1 - time2).total_seconds() print("(2019,1,13,12,0,0)與當前時間相差:", differtime, "秒!") # (2019,1,13,12,0,0)與當前時間相差: -53340090.286307 秒! # 當前日期 curdate = date.today() print("curdate =", curdate) # curdate = 2020-09-21 # 計算十天之後的日期時間 nowday = datetime.now() # timedelta類可以很容易地算出前幾天和後幾天的時刻。(timedelta(days= d, hours= h)) # 還可以檢視第幾周對應的時間,例如:timedelta(weeks=20) 20周將被自動轉化為天數 # 前幾天時刻,用減法。 後幾天時刻,則用當前時間加上timedelta(days = d, hours= h) lastday = nowday + timedelta(days=10) print(str(lastday)) # 2020-10-01 20:41:30.286307 # ctime() 返回一個表示日期和時間的字串。 print(lastday.ctime()) # Thu Oct 1 20:41:30 2020 # 檢視某一天是今年的第幾天和第幾周 testday = date(2017, 8, 31) # isocalendar() 函式返回三元組 分別為:年份,週數,周幾 print(testday.isocalendar()) # (2017, 35, 4) # timetuple() 返回時間元祖 print(testday.timetuple()) # time.struct_time(tm_year=2017, tm_mon=8, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=243, tm_isdst=-1)
# 獲取當前時間
from datetime import datetime

print(datetime.now())
# 2018-10-08 08:08:13.296957
print(datetime.now().time())
# 08:08:13.296957
print(type(datetime.now()))
# <class 'datetime.datetime'>
# 獲取當前日期
from datetime import datetime

print(datetime.now().date())
# 2018-10-08
print(type(datetime.now().date()))
# <class 'datetime.date'>
# 獲取當前時間的tuple元組
from datetime import datetime

print(datetime.now().timetuple())
# time.struct_time(tm_year=2018, tm_mon=11, tm_mday=1, tm_hour=16, tm_min=21, tm_sec=5, tm_wday=3, tm_yday=305, tm_isdst=-1)
print(datetime.now().timetuple().tm_year)  # 2018  年
print(datetime.now().timetuple().tm_mon)  # 11    月
print(datetime.now().timetuple().tm_mday)  # 1     日
print(datetime.now().timetuple().tm_hour)  # 16    時
print(datetime.now().timetuple().tm_min)  # 21    分
print(datetime.now().timetuple().tm_sec)  # 5     秒
print(datetime.now().timetuple().tm_wday)  # 3     0-6 0是週一,6是週日
print(datetime.now().timetuple().tm_yday)  # 305   一年中的第幾天
print(datetime.now().timetuple().tm_isdst)  # -1    是否為下令時 1為是 0為不是 -1為未知,預設為-1
# 格式化日期和時間
from datetime import datetime

print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 2018-11-01 19:25:45
# 時間移動
# 使用datetime.timedelta這個方法來前後移動時間,可以用的引數有weeks,days,hours,minutes,seconds,microseconds.使用 days=1代表後一天,days=-1代表前一天,其他引數也一樣
from datetime import datetime
from datetime import timedelta

print(datetime.now())
# 2018-10-08 08:25:49.546137
print(datetime.now() + timedelta(days=1))
# 2018-10-09 08:25:49.547196
# 獲取兩個時間的時間差
from datetime import datetime

nowtime = datetime.now()
utctime = datetime.utcnow()
print(nowtime - utctime)
# 8:00:00
print((nowtime - utctime).total_seconds())  # 以秒計算
# 28800.0
# 時間格式轉換
# datetime轉str格式
from datetime import datetime

print(datetime.now())
# 2018-10-08 08:33:37.369422
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 2018-10-08 08:33:37
print(datetime.now().strftime("%Y-%m-%d"))
# 2018-10-08
print(datetime.now().strftime("%H-%M:%S"))
# 08:33:37
# str格式轉datetime
from datetime import datetime

print(datetime.strptime("2018-10-08 09:00:00", "%Y-%m-%d %H:%M:%S"))
# 2018-10-08 09:00:00
print(type(datetime.strptime("2018-10-08 09:00:00", "%Y-%m-%d %H:%M:%S")))
# <class 'datetime.datetime'>
# datetime轉timestamp
from datetime import datetime
import time

now = datetime.now()
print(now)
# 2018-10-08 08:51:42.215168
print(time.mktime(now.timetuple()))
# 1538959902.0  現在距離1970-01-01 00:00:00的秒數
# timestamp轉datetime
from datetime import datetime

print(datetime.fromtimestamp(1538959902.0))
# 2018-10-08 08:51:42
# 將2020 Feb 14轉換為2020-02-14格式
from datetime import datetime

c_time = "2020 Feb 14"
ctime = datetime.strptime(c_time, "%Y %b %d")
ctime = str(ctime).split(" ")[0]
print(ctime)
# 當時時間
import time

localtime = time.localtime()  # 返回結構時間
asctime = time.asctime(localtime)  # 將結構時間轉換為asctime
print(localtime)
# time.struct_time(tm_year=2018, tm_mon=11, tm_mday=1, tm_hour=19, tm_min=13, tm_sec=5, tm_wday=3, tm_yday=305, tm_isdst=0)
print(asctime)
# Thu Nov  1 19:13:05 2018
# 格式化時間和日期
import time

formattime1 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
formattime2 = time.strftime("%a-%b-%d %H:%M:%S:%Y", time.localtime())
print(formattime1)
print(formattime2)
#############################
# 2018-11-01 19:16:30
# Thu-Nov-01 19:16:30:2018
# Calendar
# Calendar模組有很廣泛的方法用來處理年曆和月曆
import calendar

print("2018年的年曆是:")
print(calendar.prcal(2018))

cal = calendar.month(2018, 10)
print("2018年10月的月曆是:")
print(cal)

print(calendar.leapdays(2000, 2018))  # 返回2000~2018內的閏年數
print(calendar.weekday(2018, 11, 2))  ##返回2018.11.2是星期幾,0-6
# 時間戳
# python3實現時間戳
import time

timestamp = round(time.time() * 1000)
print(timestamp)
# 時間戳+祕鑰生成sign驗證
# 以下 時間戳+祕鑰生成sign驗證,廣泛用於網站等進行驗證.
# 第一步:把 timestamp+"\n"+金鑰 當做簽名字串 string_to_sign
# 第二步:使用HmacSHA256演算法計算簽名,得到 hmac_code
# 第三步:將hmac_code進行Base64 encode,最後再把簽名引數再進行urlEncode,得到最終的簽名sign(需要使用UTF-8字符集)
import time
import hmac
import hashlib
import base64
import urllib
from urllib import parse

timestamp = round(time.time() * 1000)
secret = 'xiegongzi'  # 祕鑰
secret_enc = bytes(secret.encode('utf-8'))
string_to_sign = '{}\n{}'.format(timestamp, secret)  # 把 timestamp+"\n"+金鑰 當做簽名字串 string_to_sign
string_to_sign_enc = bytes(string_to_sign.encode('utf-8'))
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()  # 使用HmacSHA256演算法計算簽名,得到 hmac_code
hmac_code_base64 = base64.b64encode(hmac_code)  # 將hmac_code進行Base64 encode
sign = urllib.parse.quote(hmac_code_base64)  # 進行urlEncode,得到最終的簽名sign
print("sign = ", sign)
# 將時間戳+祕鑰生成sign驗證封裝成函式

import time
import hmac
import hashlib
import base64
import urllib
from urllib import parse


def sign(strSecret):
    timesTamp = round(time.time() * 1000)
    secretEnc = bytes(strSecret.encode('utf8'))
    # 把 timesTamp+"\n"+金鑰 當做簽名字串 string_to_sign
    stringToSign = '{}\n{}'.format(timesTamp, strSecret)
    stringToSignEnc = bytes(stringToSign.encode('utf8'))
    # 使用HmacSHA256演算法計算簽名,得到 hmacCode
    hmacCode = hmac.new(secretEnc, stringToSignEnc, digestmod=hashlib.sha256).digest()
    # 將hmacCode進行Base64 encode
    hmacCodeBase64 = base64.b64encode(hmacCode)  # 將hmacCode進行Base64 encode
    signName = urllib.parse.quote(hmacCodeBase64)

    return signName
列印結果 解釋
print(time.strftime('%a')) Mon 星期幾的簡寫
print(time.strftime('%A')) Monday 星期幾的全稱
print(time.strftime('%b')) Sep 月分的簡寫
print(time.strftime('%B')) September 月份的全稱
print(time.strftime('%c')) Mon Sep 21 17:21:42 2020 標準的日期的時間串
print(time.strftime('%C')) 20 年份的後兩位數字
print(time.strftime('%d')) 21 十進位制表示的每月的第幾天
print(time.strftime('%D')) 09/21/20 月/天/年
print(time.strftime('%e')) 21 在兩字元域中,十進位制表示的每月的第幾天
print(time.strftime('%F')) 2020-09-21 年-月-日
print(time.strftime('%g')) 20 年份的後兩位數字
print(time.strftime('%G')) 2020 使用基於周的年
print(time.strftime('%h')) Sep 簡寫的月份名
print(time.strftime('%H')) 17 24小時制的小時
print(time.strftime('%I')) 05 第幾個小時(12小時制,01 - 12)
print(time.strftime('%j')) 265 十進位制表示的每年的第幾天
print(time.strftime('%m')) 09 十進位制表示的月份
print(time.strftime('%M')) 21 十進位制表示的分鐘數
print(time.strftime('%p')) PM 本地的AM或PM的等價顯示
print(time.strftime('%r')) 05:21:43 PM 12小時的時間
print(time.strftime('%R')) 17:21 顯示小時和分鐘:hh:mm
print(time.strftime('%S')) 43 十進位制的秒數 (01 - 61)不是59,閏年秒佔兩秒
print(time.strftime('%T')) 17:21:43 顯示時分秒:hh:mm:ss
print(time.strftime('%u')) 1 每週的第幾天,星期一為第一天 (值從0到6,星期一為0)
print(time.strftime('%U')) 38 每年的第幾周,把星期日做為第一天(值從0到53)
print(time.strftime('%V')) 39 每年的第幾周,使用基於周的年
print(time.strftime('%w')) 1 十進位制表示的星期幾(值從0到6,星期天為0)
print(time.strftime("%W")) 38 每年的第幾周,把星期一做為第一天(值從0到53)
print(time.strftime("%x")) 09/21/20 標準的日期串
print(time.strftime('%X')) 17:21:43 標準的時間串
print(time.strftime('%y')) 20 不帶世紀的十進位制年份(值從0到99)
print(time.strftime('%Y')) 2020 帶世紀部分的十制年份
print(time.strftime('%z')) +0800 時區
print(time.strftime('%Z')) 中國標準時間 時區名稱,如果不能得到時區名稱則返回空字元
print(time.strftime('%%')) % 百分號