1+ use core:: time:: Duration ;
12use std:: time:: { SystemTime , UNIX_EPOCH } ;
23
34use super :: DateTime ;
@@ -7,10 +8,10 @@ use crate::offset::Local;
78use crate :: offset:: { FixedOffset , TimeZone , Utc } ;
89#[ cfg( feature = "clock" ) ]
910use crate :: Datelike ;
10- use crate :: OldTimeDelta ;
11+ use crate :: TimeDelta ;
1112
1213#[ test]
13- fn test_datetime_offset ( ) {
14+ fn test_datetime_offset_duration ( ) {
1415 let est = FixedOffset :: west_opt ( 5 * 60 * 60 ) . unwrap ( ) ;
1516 let edt = FixedOffset :: west_opt ( 4 * 60 * 60 ) . unwrap ( ) ;
1617 let kst = FixedOffset :: east_opt ( 9 * 60 * 60 ) . unwrap ( ) ;
@@ -69,12 +70,12 @@ fn test_datetime_offset() {
6970 let dt = Utc . ymd_opt ( 2014 , 5 , 6 ) . unwrap ( ) . and_hms_opt ( 7 , 8 , 9 ) . unwrap ( ) ;
7071 assert_eq ! ( dt, edt. ymd_opt( 2014 , 5 , 6 ) . unwrap( ) . and_hms_opt( 3 , 8 , 9 ) . unwrap( ) ) ;
7172 assert_eq ! (
72- dt + OldTimeDelta :: seconds ( 3600 + 60 + 1 ) ,
73+ dt + Duration :: from_secs ( 3600 + 60 + 1 ) ,
7374 Utc . ymd_opt( 2014 , 5 , 6 ) . unwrap( ) . and_hms_opt( 8 , 9 , 10 ) . unwrap( )
7475 ) ;
7576 assert_eq ! (
76- dt. signed_duration_since ( edt. ymd_opt( 2014 , 5 , 6 ) . unwrap( ) . and_hms_opt( 10 , 11 , 12 ) . unwrap( ) ) ,
77- OldTimeDelta :: seconds ( - 7 * 3600 - 3 * 60 - 3 )
77+ dt. duration_since ( edt. ymd_opt( 2014 , 5 , 6 ) . unwrap( ) . and_hms_opt( 10 , 11 , 12 ) . unwrap( ) ) ,
78+ TimeDelta :: Backwards ( Duration :: from_secs ( 7 * 3600 + 3 * 60 + 3 ) )
7879 ) ;
7980
8081 assert_eq ! ( * Utc . ymd_opt( 2014 , 5 , 6 ) . unwrap( ) . and_hms_opt( 7 , 8 , 9 ) . unwrap( ) . offset( ) , Utc ) ;
@@ -362,8 +363,6 @@ fn test_subsecond_part() {
362363#[ test]
363364#[ cfg( not( target_os = "windows" ) ) ]
364365fn test_from_system_time ( ) {
365- use std:: time:: Duration ;
366-
367366 let epoch = Utc . ymd_opt ( 1970 , 1 , 1 ) . unwrap ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) ;
368367 let nanos = 999_999_999 ;
369368
@@ -411,8 +410,6 @@ fn test_from_system_time() {
411410#[ test]
412411#[ cfg( target_os = "windows" ) ]
413412fn test_from_system_time ( ) {
414- use std:: time:: Duration ;
415-
416413 let nanos = 999_999_000 ;
417414
418415 let epoch = Utc . ymd_opt ( 1970 , 1 , 1 ) . unwrap ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) ;
@@ -513,98 +510,95 @@ fn test_datetime_from_local() {
513510
514511#[ test]
515512#[ cfg( feature = "clock" ) ]
516- fn test_years_elapsed ( ) {
517- use crate :: Days ;
518-
513+ fn test_years_elapsed_duration ( ) {
519514 const WEEKS_PER_YEAR : f32 = 52.1775 ;
520515
521516 // This is always at least one year because 1 year = 52.1775 weeks.
522- let one_year_ago = Utc . from_utc_date (
523- & ( Utc :: today ( ) . naive_utc ( ) - Days :: new ( ( WEEKS_PER_YEAR * 1.5 * 7.0 ) . ceil ( ) as u64 ) ) ,
524- ) ;
517+ let one_year_ago = Utc :: today ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( )
518+ - Duration :: from_secs ( 7 * 24 * 60 * 60 * ( WEEKS_PER_YEAR * 1.5 ) . ceil ( ) as u64 ) ;
525519 // A bit more than 2 years.
526- let two_year_ago = Utc . from_utc_date (
527- & ( Utc :: today ( ) . naive_utc ( ) - Days :: new ( ( WEEKS_PER_YEAR * 2.5 * 7.0 ) . ceil ( ) as u64 ) ) ,
528- ) ;
520+ let two_year_ago = Utc :: today ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( )
521+ - Duration :: from_secs ( 7 * 24 * 60 * 60 * ( WEEKS_PER_YEAR * 2.5 ) . ceil ( ) as u64 ) ;
529522
530- assert_eq ! ( Utc :: today( ) . years_since( one_year_ago) , Some ( 1 ) ) ;
531- assert_eq ! ( Utc :: today( ) . years_since( two_year_ago) , Some ( 2 ) ) ;
523+ assert_eq ! ( Utc :: today( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) . years_since( one_year_ago) , Some ( 1 ) ) ;
524+ assert_eq ! ( Utc :: today( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) . years_since( two_year_ago) , Some ( 2 ) ) ;
532525
533526 // If the given DateTime is later than now, the function will always return 0.
534- let future = Utc . from_utc_date ( & ( Utc :: today ( ) . naive_utc ( ) + Days :: new ( 12 * 7 ) ) ) ;
535- assert_eq ! ( Utc :: today( ) . years_since( future) , None ) ;
527+ let future =
528+ Utc :: today ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) + Duration :: from_secs ( 7 * 24 * 60 * 60 * 12 ) ;
529+ assert_eq ! ( Utc :: today( ) . and_hms_opt( 0 , 0 , 0 ) . unwrap( ) . years_since( future) , None ) ;
536530}
537531
538532#[ test]
539- fn test_datetime_add_assign ( ) {
533+ fn test_datetime_add_assign_duration ( ) {
540534 let naivedatetime = NaiveDate :: from_ymd_opt ( 2000 , 1 , 1 ) . unwrap ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) ;
541535 let datetime = DateTime :: < Utc > :: from_utc ( naivedatetime, Utc ) ;
542536 let mut datetime_add = datetime;
543537
544- datetime_add += OldTimeDelta :: seconds ( 60 ) ;
545- assert_eq ! ( datetime_add, datetime + OldTimeDelta :: seconds ( 60 ) ) ;
538+ datetime_add += Duration :: from_secs ( 60 ) ;
539+ assert_eq ! ( datetime_add, datetime + Duration :: from_secs ( 60 ) ) ;
546540
547541 let timezone = FixedOffset :: east_opt ( 60 * 60 ) . unwrap ( ) ;
548542 let datetime = datetime. with_timezone ( & timezone) ;
549543 let datetime_add = datetime_add. with_timezone ( & timezone) ;
550544
551- assert_eq ! ( datetime_add, datetime + OldTimeDelta :: seconds ( 60 ) ) ;
545+ assert_eq ! ( datetime_add, datetime + Duration :: from_secs ( 60 ) ) ;
552546
553547 let timezone = FixedOffset :: west_opt ( 2 * 60 * 60 ) . unwrap ( ) ;
554548 let datetime = datetime. with_timezone ( & timezone) ;
555549 let datetime_add = datetime_add. with_timezone ( & timezone) ;
556550
557- assert_eq ! ( datetime_add, datetime + OldTimeDelta :: seconds ( 60 ) ) ;
551+ assert_eq ! ( datetime_add, datetime + Duration :: from_secs ( 60 ) ) ;
558552}
559553
560554#[ test]
561555#[ cfg( feature = "clock" ) ]
562- fn test_datetime_add_assign_local ( ) {
556+ fn test_datetime_add_assign_local_duration ( ) {
563557 let naivedatetime = NaiveDate :: from_ymd_opt ( 2022 , 1 , 1 ) . unwrap ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) ;
564558
565559 let datetime = Local . from_utc_datetime ( & naivedatetime) ;
566560 let mut datetime_add = Local . from_utc_datetime ( & naivedatetime) ;
567561
568562 // ensure we cross a DST transition
569563 for i in 1 ..=365 {
570- datetime_add += OldTimeDelta :: days ( 1 ) ;
571- assert_eq ! ( datetime_add, datetime + OldTimeDelta :: days ( i) )
564+ datetime_add += Duration :: from_secs ( 24 * 60 * 60 ) ;
565+ assert_eq ! ( datetime_add, datetime + Duration :: from_secs ( 24 * 60 * 60 * i) )
572566 }
573567}
574568
575569#[ test]
576- fn test_datetime_sub_assign ( ) {
570+ fn test_datetime_sub_assign_duration ( ) {
577571 let naivedatetime = NaiveDate :: from_ymd_opt ( 2000 , 1 , 1 ) . unwrap ( ) . and_hms_opt ( 12 , 0 , 0 ) . unwrap ( ) ;
578572 let datetime = DateTime :: < Utc > :: from_utc ( naivedatetime, Utc ) ;
579573 let mut datetime_sub = datetime;
580574
581- datetime_sub -= OldTimeDelta :: minutes ( 90 ) ;
582- assert_eq ! ( datetime_sub, datetime - OldTimeDelta :: minutes ( 90 ) ) ;
575+ datetime_sub -= Duration :: from_secs ( 60 * 90 ) ;
576+ assert_eq ! ( datetime_sub, datetime - Duration :: from_secs ( 60 * 90 ) ) ;
583577
584578 let timezone = FixedOffset :: east_opt ( 60 * 60 ) . unwrap ( ) ;
585579 let datetime = datetime. with_timezone ( & timezone) ;
586580 let datetime_sub = datetime_sub. with_timezone ( & timezone) ;
587581
588- assert_eq ! ( datetime_sub, datetime - OldTimeDelta :: minutes ( 90 ) ) ;
582+ assert_eq ! ( datetime_sub, datetime - Duration :: from_secs ( 60 * 90 ) ) ;
589583
590584 let timezone = FixedOffset :: west_opt ( 2 * 60 * 60 ) . unwrap ( ) ;
591585 let datetime = datetime. with_timezone ( & timezone) ;
592586 let datetime_sub = datetime_sub. with_timezone ( & timezone) ;
593587
594- assert_eq ! ( datetime_sub, datetime - OldTimeDelta :: minutes ( 90 ) ) ;
588+ assert_eq ! ( datetime_sub, datetime - Duration :: from_secs ( 60 * 90 ) ) ;
595589}
596590
597591#[ test]
598592#[ cfg( feature = "clock" ) ]
599- fn test_datetime_sub_assign_local ( ) {
593+ fn test_datetime_sub_assign_local_duration ( ) {
600594 let naivedatetime = NaiveDate :: from_ymd_opt ( 2022 , 1 , 1 ) . unwrap ( ) . and_hms_opt ( 0 , 0 , 0 ) . unwrap ( ) ;
601595
602596 let datetime = Local . from_utc_datetime ( & naivedatetime) ;
603597 let mut datetime_sub = Local . from_utc_datetime ( & naivedatetime) ;
604598
605599 // ensure we cross a DST transition
606600 for i in 1 ..=365 {
607- datetime_sub -= OldTimeDelta :: days ( 1 ) ;
608- assert_eq ! ( datetime_sub, datetime - OldTimeDelta :: days ( i) )
601+ datetime_sub -= Duration :: from_secs ( 24 * 60 * 60 ) ;
602+ assert_eq ! ( datetime_sub, datetime - Duration :: from_secs ( 24 * 60 * 60 * i) )
609603 }
610604}
0 commit comments