@@ -435,6 +435,70 @@ def test_time_omit_microseconds(self):
435435 b'["02:03:04"]' ,
436436 )
437437
438+ def test_datetime_utc_z_naive_omit (self ):
439+ """
440+ datetime.datetime naive OPT_UTC_Z
441+ """
442+ self .assertEqual (
443+ orjson .dumps (
444+ [datetime .datetime (2000 , 1 , 1 , 2 , 3 , 4 , 123 )],
445+ option = orjson .OPT_NAIVE_UTC
446+ | orjson .OPT_UTC_Z
447+ | orjson .OPT_OMIT_MICROSECONDS ,
448+ ),
449+ b'["2000-01-01T02:03:04Z"]' ,
450+ )
451+
452+ def test_datetime_utc_z_naive (self ):
453+ """
454+ datetime.datetime naive OPT_UTC_Z
455+ """
456+ self .assertEqual (
457+ orjson .dumps (
458+ [datetime .datetime (2000 , 1 , 1 , 2 , 3 , 4 , 123 )],
459+ option = orjson .OPT_NAIVE_UTC | orjson .OPT_UTC_Z ,
460+ ),
461+ b'["2000-01-01T02:03:04.000123Z"]' ,
462+ )
463+
464+ def test_datetime_utc_z_without_tz (self ):
465+ """
466+ datetime.datetime naive OPT_UTC_Z
467+ """
468+ self .assertEqual (
469+ orjson .dumps (
470+ [datetime .datetime (2000 , 1 , 1 , 2 , 3 , 4 , 123 )], option = orjson .OPT_UTC_Z
471+ ),
472+ b'["2000-01-01T02:03:04.000123"]' ,
473+ )
474+
475+ def test_datetime_utc_z_with_tz (self ):
476+ """
477+ datetime.datetime naive OPT_UTC_Z
478+ """
479+ self .assertEqual (
480+ orjson .dumps (
481+ [
482+ datetime .datetime (
483+ 2000 , 1 , 1 , 0 , 0 , 0 , 1 , tzinfo = datetime .timezone .utc
484+ )
485+ ],
486+ option = orjson .OPT_UTC_Z ,
487+ ),
488+ b'["2000-01-01T00:00:00.000001Z"]' ,
489+ )
490+ self .assertEqual (
491+ orjson .dumps (
492+ [
493+ datetime .datetime (
494+ 1937 , 1 , 1 , 12 , 0 , 27 , 87 , tzinfo = tz .gettz ("Europe/Amsterdam" )
495+ )
496+ ],
497+ option = orjson .OPT_UTC_Z ,
498+ ),
499+ b'["1937-01-01T12:00:27.000087+00:20"]' ,
500+ )
501+
438502 @pytest .mark .skipif (pendulum is None , reason = "pendulum install broken on win" )
439503 def test_datetime_roundtrip (self ):
440504 """
0 commit comments