python
  • string
  • date
  • 2017-07-14 5 views 2 likes 
    2

    これはうまくいくと思われますが、私はPythonで "これはいつもうまくいく"と言うほどの経験はありません。これを破る例で、誰かがここで確認したり、チャイムでチャットできますか?Pythonの日付文字列の一致をISO8601で確実に確認できますか?

    ipdb> '2017-01-01' > '2016-12-31' 
    True 
    ipdb> '2017-01-01' < '2016-12-31' 
    False 
    ipdb> '2017-01-01' >= '2016-12-31' 
    True 
    ipdb> '2017-07-01' < '2017-12-31' 
    True 
    
    +2

    ISO8601と同じフォーマットであれば、うまくいくはずです。 ISO8601がそのように形成された理由の1つは、簡単な文字列比較です。 – zwer

    答えて

    0

    いくつかのケースでは(特にあなたが与えたものであり、それらのすべてに似ている)、あなたのメソッドは機能しますが、いくつかのコーナーケースで失敗します。たとえば、ISO 8601では、週の形式で日付を指定できます。 2017年の第1日目(2月:1月)に「2017-W02-1」と書くことができます。

    あなたがいることをしようとした場合、あなたは問題を得る:

    >>> '2017-12-31' > '2017-W01-1' 
    False 
    

    それが真である必要がありますが。

    あなたが本当にISO 8601をサポートしたい場合は、isodatepip install isodateによってインストール)のような適切なパッケージを使用する必要があります。そうすれば、コーナーケースを正しく行うことができます。

    >>> isodate.parse_date('2017-12-31') > isodate.parse_date('2017-W01-1') 
    True 
    
    関連する問題