diff --git a/examples/example_hl.f90 b/examples/example_hl.f90 index eb9cc94ecf7f6aa8c2578c64af9691fa6fbdfea0..0a6728fe1cdfd9d1fa6a27a826113b9fa22f7987 100644 --- a/examples/example_hl.f90 +++ b/examples/example_hl.f90 @@ -87,6 +87,10 @@ PROGRAM example dt3 = "1970-01-01T00:00:01" WRITE (0,*) dt%to_string(), " == ", dt3%to_string(), ": ", (dt == dt3) + ! interval assignment with milliseconds + td = 360000 + WRITE (0,*) "interval assignment with milliseconds: ", td%to_string() + ! ------------------------------------------------------------ ! EXAMPLE FOR ERROR HANDLING ! ------------------------------------------------------------ diff --git a/src/libmtime_hl.f90 b/src/libmtime_hl.f90 index 19a480e802437f8101c57c6c1fea22d61a3e8bda..5356ac80490e39f13a78101b19dd7f342b1dc0b8 100644 --- a/src/libmtime_hl.f90 +++ b/src/libmtime_hl.f90 @@ -18,6 +18,8 @@ module mtime_hl public :: t_datetime, t_timedelta + INTEGER, PARAMETER :: i8 = SELECTED_INT_KIND(14) !< at least 8 byte integer + !> Wrapper class for "mtime" data type "datetime". ! ! Avoids, e.g., explicit use of POINTERs by the user. @@ -68,8 +70,9 @@ module mtime_hl procedure :: to_string => t_timedelta_to_string procedure :: assign_string => t_timedelta_assign_string + procedure :: assign_ms => t_timedelta_assign_ms - generic :: assignment(=) => assign_string + GENERIC :: ASSIGNMENT(=) => assign_string, assign_ms end type t_timedelta @@ -183,6 +186,20 @@ contains call deallocateTimedelta(td_tmp) end subroutine t_timedelta_assign_string + ! Assignment operator: this = milliseconds. + ! + SUBROUTINE t_timedelta_assign_ms(this, td_ms) + CLASS (t_timedelta), INTENT(out) :: this + INTEGER, INTENT(in) :: td_ms + TYPE(timedelta), POINTER :: td_tmp + CHARACTER(len=max_timedelta_str_len) :: td_string + CALL getPTStringFromMS(INT(td_ms,i8), td_string) + td_tmp => newTimedelta(td_string) + this%td = td_tmp + this%td%sign = td_tmp%sign + call deallocateTimedelta(td_tmp) + END SUBROUTINE t_timedelta_assign_ms + end module mtime_hl !> !! @}