74514
```

    import datetime
    import pytz
    import dateutil.parser
    
    dt = dateutil.parser.parse('2021-03-02 06:00:00')
    print(dt)
    print(dt.tzinfo)
    print(dt.date())
    
    dt_utc = dt.astimezone(pytz.timezone('UTC'))
    print(dt_utc)
    print(dt_utc.tzinfo)
    print(dt_utc.date())
    
```

を実行すると

```

    2021-03-02 06:00:00
    None
    2021-03-02
    2021-03-01 21:00:00+00:00
    UTC
    2021-03-01
    
```

となってしまい parse はローカル時間 JST で生成されるようです  
これをUTCに変換してしまうと日付がずれてしまいます

時刻文字列のフォーマットに自由度もたせたいので strptime ではなく parse でよみたいのですが

```

    '2020-03-02 06:00:00'     => UTC 3/2 06:00
    '2020-03-02 06:00:00+900' => UTC 3/1 21:00
    
```

という感じでタイムゾーン指定がある場合はそのタイムゾーン文字列として読み込み  
何もない場合にUTCとして読み込んで最終的に生成する datetime オブジェクトは UTC として生成したいです

dateutil.parse では実現できないでしょうか？
CC BY-SA 4.0
2021-03-02T09:12:45.080
74362
2021-03-08T07:01:34.833
question
python
dateutil.parse で指定したタイムゾーン時刻として読みたい
コメントでいただいた通り

```

    import datetime
    import pytz
    import dateutil.parser
    
    dt = dateutil.parser.parse('2021-03-02 06:00:00', default=dateutil.parser.parse('00:00Z'))
    print(dt)
    print(dt.tzinfo)
    print(dt.date())
    
    dt = dateutil.parser.parse('2021-03-02T06:00:00+0900', default=dateutil.parser.parse('00:00Z'))
    print(dt)
    print(dt.tzinfo)
    print(dt.date())
    
```

という感じで default キーを設定するとタイムゾーン不明な場合にUTCにしてくれるようです

```

    2021-03-02 06:00:00+00:00
    tzutc()
    2021-03-02
    2021-03-02 06:00:00+09:00
    tzoffset(None, 32400)
    2021-03-02
    
```

```

    .astimezone(dateutil.tz.gettz('UTC'))
    
```

をつければ UTC になりますが  
DB にいれるところで変換してるので正しく tz 情報がついてるということで解決しました
CC BY-SA 4.0
2021-03-08T07:01:34.833
74514
2021-03-08T07:01:34.833
74362
answer