@@ -5,7 +5,7 @@ use time::{
55 Date , OffsetDateTime , PrimitiveDateTime , Time , UtcOffset ,
66} ;
77
8- use crate :: { property:: DateAndOrTime , Error , Result } ;
8+ use crate :: { property:: DateAndOrTime , DateTime , Error , Result } ;
99
1010// UTC OFFSET
1111
@@ -196,14 +196,14 @@ fn do_parse_date(s: &str) -> Result<Date> {
196196 }
197197}
198198
199- pub ( crate ) fn format_date ( value : & Date ) -> Result < String > {
199+ pub ( crate ) fn format_date ( value : & crate :: Date ) -> Result < String > {
200200 let date = format_description:: parse ( "[year][month][day]" ) ?;
201- Ok ( value. format ( & date) ?)
201+ Ok ( value. as_ref ( ) . format ( & date) ?)
202202}
203203
204204pub ( crate ) fn format_date_list (
205205 f : & mut fmt:: Formatter < ' _ > ,
206- val : & [ Date ] ,
206+ val : & [ crate :: Date ] ,
207207) -> fmt:: Result {
208208 for ( index, item) in val. iter ( ) . enumerate ( ) {
209209 write ! ( f, "{}" , & format_date( item) . map_err( |_| fmt:: Error ) ?) ?;
@@ -217,7 +217,7 @@ pub(crate) fn format_date_list(
217217// DATETIME
218218
219219/// Parse a list of date times separated by a comma.
220- pub fn parse_date_time_list ( value : & str ) -> Result < Vec < OffsetDateTime > > {
220+ pub fn parse_date_time_list ( value : & str ) -> Result < Vec < DateTime > > {
221221 let mut values = Vec :: new ( ) ;
222222 for value in value. split ( ',' ) {
223223 values. push ( parse_date_time ( value) ?) ;
@@ -226,7 +226,7 @@ pub fn parse_date_time_list(value: &str) -> Result<Vec<OffsetDateTime>> {
226226}
227227
228228/// Parse a date time.
229- pub fn parse_date_time ( value : & str ) -> Result < OffsetDateTime > {
229+ pub fn parse_date_time ( value : & str ) -> Result < DateTime > {
230230 let mut it = value. splitn ( 2 , 'T' ) ;
231231 let date = it
232232 . next ( )
@@ -242,10 +242,11 @@ pub fn parse_date_time(value: &str) -> Result<OffsetDateTime> {
242242 . replace_date ( date)
243243 . replace_time ( time)
244244 . replace_offset ( offset) ;
245- Ok ( utc)
245+ Ok ( utc. into ( ) )
246246}
247247
248- pub ( crate ) fn format_date_time ( d : & OffsetDateTime ) -> Result < String > {
248+ pub ( crate ) fn format_date_time ( d : & DateTime ) -> Result < String > {
249+ let d = d. as_ref ( ) ;
249250 let offset = ( * d) . offset ( ) ;
250251
251252 let format = if offset == UtcOffset :: UTC {
@@ -263,7 +264,7 @@ pub(crate) fn format_date_time(d: &OffsetDateTime) -> Result<String> {
263264
264265pub ( crate ) fn format_date_time_list (
265266 f : & mut fmt:: Formatter < ' _ > ,
266- val : & [ OffsetDateTime ] ,
267+ val : & [ DateTime ] ,
267268) -> fmt:: Result {
268269 for ( index, item) in val. iter ( ) . enumerate ( ) {
269270 write ! ( f, "{}" , & format_date_time( item) . map_err( |_| fmt:: Error ) ?) ?;
@@ -277,7 +278,7 @@ pub(crate) fn format_date_time_list(
277278// TIMESTAMP
278279
279280/// Parse a timestamp.
280- pub fn parse_timestamp ( value : & str ) -> Result < OffsetDateTime > {
281+ pub fn parse_timestamp ( value : & str ) -> Result < DateTime > {
281282 let offset_format = format_description:: parse (
282283 "[year][month][day]T[hour][minute][second][offset_hour sign:mandatory][offset_minute]" ,
283284 ) ?;
@@ -292,24 +293,24 @@ pub fn parse_timestamp(value: &str) -> Result<OffsetDateTime> {
292293 ) ?;
293294
294295 if let Ok ( result) = OffsetDateTime :: parse ( value, & offset_format) {
295- Ok ( result)
296+ Ok ( result. into ( ) )
296297 } else if let Ok ( result) =
297- OffsetDateTime :: parse ( value, & offset_format_hours)
298+ OffsetDateTime :: parse ( value, & offset_format_hours) . into ( )
298299 {
299- Ok ( result)
300+ Ok ( result. into ( ) )
300301 } else if let Ok ( result) = PrimitiveDateTime :: parse ( value, & utc_format) {
301302 let result = OffsetDateTime :: now_utc ( ) . replace_date_time ( result) ;
302- Ok ( result)
303+ Ok ( result. into ( ) )
303304 } else {
304305 let result = PrimitiveDateTime :: parse ( value, & implicit_utc_format) ?;
305306 let result = OffsetDateTime :: now_utc ( ) . replace_date_time ( result) ;
306- Ok ( result)
307+ Ok ( result. into ( ) )
307308 }
308309}
309310
310311pub ( crate ) fn format_timestamp_list (
311312 f : & mut fmt:: Formatter < ' _ > ,
312- val : & [ OffsetDateTime ] ,
313+ val : & [ DateTime ] ,
313314) -> fmt:: Result {
314315 for ( index, item) in val. iter ( ) . enumerate ( ) {
315316 write ! ( f, "{}" , & format_date_time( item) . map_err( |_| fmt:: Error ) ?) ?;
@@ -321,7 +322,7 @@ pub(crate) fn format_timestamp_list(
321322}
322323
323324/// Parse a list of date and or time types possibly separated by a comma.
324- pub fn parse_timestamp_list ( value : & str ) -> Result < Vec < OffsetDateTime > > {
325+ pub fn parse_timestamp_list ( value : & str ) -> Result < Vec < DateTime > > {
325326 let mut values = Vec :: new ( ) ;
326327 for value in value. split ( ',' ) {
327328 values. push ( parse_timestamp ( value) ?) ;
0 commit comments