strftimeとstrptimeの違いは何でしょうか?

これ、名前も似てますし少し分かりにくいですよね。 両者とも文字列と日付を変換するための処理です

strptime: 文字列 => 日付 strftime: 日付 => 文字列

strptime

strptimeは「文字列」を「日付」に変換します。

たとえば 2016-11-05 という文字を 年-月-日 と解釈して変換するには、以下のように strptime を使います。

from datetime import datetime
d = datetime.strptime("1991-11-05", "%Y-%m-%d")
print(d.year)  # 1991という数字になります
print(d.month)  # 11という数字になります
print(d.day)  # 5という数字になります

詳しくは、strptime()を参照ください。

strftime

strftimeは「日付」を「文字列」に変換します。

たとえば datetime(1991, 11, 5) という日付を 年-月-日 というハイフン区切りの文字列に変換するため、以下のように strftime を使います。

d = datetime(1991, 11, 5)  # 1991年11月5日の、日付を変数dに入れる
print(d.strftime("%Y-%m-%d"))  # 年-月-日として文字列にする

詳しくは、strftime()を参照ください。