@@ -47,24 +47,69 @@ public DateTime ParseExact(string value, string format)
4747 return DateTime . ParseExact ( value , format , Context . Configuration . FormatProvider ) ;
4848 }
4949
50+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddYears" ) ]
51+ public DateTime AddYears ( object value , int increment , string ? format = null )
52+ {
53+ return GetDateTimeNonNullabe ( value , format ) . AddYears ( increment ) ;
54+ }
55+
56+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddMonths" ) ]
57+ public DateTime AddMonths ( object value , int increment , string ? format = null )
58+ {
59+ return GetDateTimeNonNullabe ( value , format ) . AddMonths ( increment ) ;
60+ }
61+
62+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddDays" ) ]
63+ public DateTime AddDays ( object value , int increment , string ? format = null )
64+ {
65+ return GetDateTimeNonNullabe ( value , format ) . AddDays ( increment ) ;
66+ }
67+
68+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddHours" ) ]
69+ public DateTime AddHours ( object value , int increment , string ? format = null )
70+ {
71+ return GetDateTimeNonNullabe ( value , format ) . AddHours ( increment ) ;
72+ }
73+
74+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddMinutes" ) ]
75+ public DateTime AddMinutes ( object value , int increment , string ? format = null )
76+ {
77+ return GetDateTimeNonNullabe ( value , format ) . AddMinutes ( increment ) ;
78+ }
79+
80+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddSeconds" ) ]
81+ public DateTime AddSeconds ( object value , int increment , string ? format = null )
82+ {
83+ return GetDateTimeNonNullabe ( value , format ) . AddSeconds ( increment ) ;
84+ }
85+
86+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddMilliseconds" ) ]
87+ public DateTime AddMilliseconds ( object value , int increment , string ? format = null )
88+ {
89+ return GetDateTimeNonNullabe ( value , format ) . AddMilliseconds ( increment ) ;
90+ }
91+
92+ [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.AddTicks" ) ]
93+ public DateTime AddTicks ( object value , int increment , string ? format = null )
94+ {
95+ return GetDateTimeNonNullabe ( value , format ) . AddTicks ( increment ) ;
96+ }
97+
5098 [ HandlebarsWriter ( WriterType . Value , Name = "DateTime.Add" ) ]
5199 public DateTime Add ( object value , int increment , string datePart , string ? format = null )
52100 {
53- Guard . NotNull ( value ) ;
54- Guard . NotNullOrEmpty ( datePart ) ;
55-
56- var dateTime = Guard . NotNull ( GetDatetime ( value , format ) ) ! ;
101+ var dateTime = GetDateTimeNonNullabe ( value , format ) ! ;
57102
58103 return datePart switch
59104 {
60- "years" => dateTime . Value . AddYears ( increment ) ,
61- "months" => dateTime . Value . AddMonths ( increment ) ,
62- "days" => dateTime . Value . AddDays ( increment ) ,
63- "hours" => dateTime . Value . AddHours ( increment ) ,
64- "minutes" => dateTime . Value . AddMinutes ( increment ) ,
65- "seconds" => dateTime . Value . AddSeconds ( increment ) ,
66- "milliseconds" => dateTime . Value . AddMilliseconds ( increment ) ,
67- "ticks" => dateTime . Value . AddTicks ( increment ) ,
105+ "years" => dateTime . AddYears ( increment ) ,
106+ "months" => dateTime . AddMonths ( increment ) ,
107+ "days" => dateTime . AddDays ( increment ) ,
108+ "hours" => dateTime . AddHours ( increment ) ,
109+ "minutes" => dateTime . AddMinutes ( increment ) ,
110+ "seconds" => dateTime . AddSeconds ( increment ) ,
111+ "milliseconds" => dateTime . AddMilliseconds ( increment ) ,
112+ "ticks" => dateTime . AddTicks ( increment ) ,
68113 _ => throw new ArgumentException ( "Invalid date part. It must be one of: [years, months, days, hours, minutes, seconds, milliseconds or ticks]." )
69114 } ;
70115 }
@@ -80,5 +125,10 @@ public DateTime Add(object value, int increment, string datePart, string? format
80125 } ;
81126 }
82127
128+ private DateTime GetDateTimeNonNullabe ( object value , string ? format )
129+ {
130+ return Guard . NotNull ( GetDatetime ( Guard . NotNull ( value ) , format ) ) . GetValueOrDefault ( ) ;
131+ }
132+
83133 public override Category Category => Category . DateTime ;
84134}
0 commit comments