場合によっては、self.startがunicode:Python:ユニコードのテストとtime()への変換
などです。 datetime.combineが
start = datetime.combine(self.job_record.date, self.start)
を訴える作る
>>>self.start
u'07:30:00'
どのように行います:Unicodeの
- テスト?
- u'07:30:00 'からdatetime.timeに変換しますか?
場合によっては、self.startがunicode:Python:ユニコードのテストとtime()への変換
などです。 datetime.combineが
start = datetime.combine(self.job_record.date, self.start)
を訴える作る
>>>self.start
u'07:30:00'
どのように行います:Unicodeの
datetime.combine
は、2番目の引数が文字列(またはユニコード文字列)ではなくdatetime.time
インスタンスであると予想しているため、不平を言っています。
文字列をdatetime.time
インスタンスに変換する方法はいくつかあります。 1つの方法は、datetime.strptime
を使用することです:
t = datetime.strptime(self.start, "%H:%M:%S").time()
start = datetime.combine(self.job_record.date, t)
ユニコードのチェック:30:07に文字セットの文字が拡張されることはありませんと仮定すると
>>> import time
>>> time.strptime(u'07:30:00', '%H:%M:%S')
(1900, 1, 1, 7, 30, 0, 0, 1, -1)
:
>>> import types
>>> type(u'07:30:00') is types.UnicodeType
True
>>> type('regular string') is types.UnicodeType
False
は時間に文字列を変換する00' 、そして使用str(self.start)
。
時刻の数字が文字セット固有の可能性がある場合は、encode()
と適切なerror
引数指定子を使用してstringに変換します。
最初にstr()
を試してみて、変換できないケース(許可ではなく許しを求める)を処理する場合は、except
を使用してください。一方、変換しようとしている値のほとんどが失敗した場合は、関数を適用する前に変換してください。
脇に:combine
関数は、datetime.dateオブジェクトとdatetime.timeオブジェクトを必要とします。実際に予測できない動作を避けたい場合は、ドキュメントで指定されたコントラクトを短絡するのではなく、date
とtime
オブジェクトを渡します。をの前にcombine
あなたのために推測するcombine
実際のエラーメッセージを追加します! – hop