Automatic generation produced by ISE Eiffel

Classes Clusters Cluster hierarchy Chart Relations Flat contracts Go to:
note description: "Duration of dates and times" legal: "See notice at end of class." status: "See notice at end of class." date: "$Date: 2019-11-13 05:17:45 -0900 (Wed, 13 Nov 2019) $" revision: "$Revision: 103677 $" access: date, time class interface DATE_TIME_DURATION create make (y, mo, d, h, mi, s: INTEGER_32) -- Set year, month, day to y, mo, d. -- Set hour, minute, second to h, mi, s. ensure date_exists: date /= Void time_exists: time /= Void year_set: year = y month_set: month = mo day_set: day = d hour_set: hour = h minute_set: minute = mi second_set: second = s make_definite (d, h, m, s: INTEGER_32) -- Set day to d. -- Set hour, minute, second to h, m, s. ensure date_exists: date /= Void time_exists: time /= Void definite_result: definite day_set: day = d hour_set: hour = h minute_set: minute = m second_set: second = s make_fine (y, mo, d, h, mi: INTEGER_32; s: REAL_64) -- set year, month, day to y, mo, d. -- set hour, minute, second to h, mi, s. ensure date_exists: date /= Void time_exists: time /= Void year_set: year = y month_set: month = mo day_set: day = d hour_set: hour = h minute_set: minute = mi fine_second_set: fine_second = s make_by_date_time (d: DATE_DURATION; t: TIME_DURATION) -- Set date to d and time to t. require date_exists: d /= Void time_exists: t /= Void ensure date_set: date = d time_set: time = t make_by_date (d: DATE_DURATION) -- Set date to d and time to zero. require d_exists: d /= Void ensure date_set: date = d time_exists: time /= Void time_set: time.is_equal (time.zero) feature -- Initialization make (y, mo, d, h, mi, s: INTEGER_32) -- Set year, month, day to y, mo, d. -- Set hour, minute, second to h, mi, s. ensure date_exists: date /= Void time_exists: time /= Void year_set: year = y month_set: month = mo day_set: day = d hour_set: hour = h minute_set: minute = mi second_set: second = s make_by_date (d: DATE_DURATION) -- Set date to d and time to zero. require d_exists: d /= Void ensure date_set: date = d time_exists: time /= Void time_set: time.is_equal (time.zero) make_by_date_time (d: DATE_DURATION; t: TIME_DURATION) -- Set date to d and time to t. require date_exists: d /= Void time_exists: t /= Void ensure date_set: date = d time_set: time = t make_definite (d, h, m, s: INTEGER_32) -- Set day to d. -- Set hour, minute, second to h, m, s. ensure date_exists: date /= Void time_exists: time /= Void definite_result: definite day_set: day = d hour_set: hour = h minute_set: minute = m second_set: second = s make_fine (y, mo, d, h, mi: INTEGER_32; s: REAL_64) -- set year, month, day to y, mo, d. -- set hour, minute, second to h, mi, s. ensure date_exists: date /= Void time_exists: time /= Void year_set: year = y month_set: month = mo day_set: day = d hour_set: hour = h minute_set: minute = mi fine_second_set: fine_second = s feature -- Access date: DATE_DURATION -- Date part of the current duration date_default_format_string: STRING_8 -- Default output format for dates -- (from DATE_CONSTANTS) Date_time_tools: DATE_TIME_TOOLS -- Tools for outputting dates and times in different formats -- (from TIME_UTILITY) day: INTEGER_32 -- Day of the current object -- (from DATE_TIME_MEASUREMENT) ensure -- from DATE_TIME_MEASUREMENT same_day: Result = date.day days_in_i_th_month (i, y: INTEGER_32): INTEGER_32 -- Number of days in the i th month at year y -- (from DATE_CONSTANTS) require -- from DATE_CONSTANTS i_large_enough: i >= 1 i_small_enough: i <= Months_in_year Days_in_leap_year: INTEGER_32 = 366 -- Number of days in a leap year -- (from DATE_CONSTANTS) Days_in_non_leap_year: INTEGER_32 = 365 -- Number of days in a non-leap year -- (from DATE_CONSTANTS) Days_in_week: INTEGER_32 = 7 -- Number of days in a week -- (from DATE_CONSTANTS) days_text: ARRAY [STRING_8] -- Short text representation of days -- (from DATE_CONSTANTS) default_format_string: STRING_8 -- Default output format string -- (from TIME_UTILITY) fine_second: REAL_64 -- Representation of second with decimals -- (from DATE_TIME_MEASUREMENT) ensure -- from DATE_TIME_MEASUREMENT same_fine_second: Result = time.fine_second fine_seconds_count: REAL_64 -- Total number of seconds of current duration require has_origin: has_origin_date_time generating_type: TYPE [detachable DATE_TIME_DURATION] -- Type of current object -- (type of which it is a direct instance) -- (from ANY) ensure -- from ANY generating_type_not_void: Result /= Void generator: STRING_8 -- Name of current object's generating class -- (base class of the type of which it is a direct instance) -- (from ANY) ensure -- from ANY generator_not_void: Result /= Void generator_not_empty: not Result.is_empty hour: INTEGER_32 -- Hour of the current object -- (from DATE_TIME_MEASUREMENT) ensure -- from DATE_TIME_MEASUREMENT same_hour: Result = time.hour Hours_in_day: INTEGER_32 = 24 -- Number of hours in a day -- (from TIME_CONSTANTS) long_days_text: ARRAY [STRING_8] -- Long text representation of days -- (from DATE_CONSTANTS) long_months_text: ARRAY [STRING_8] -- Long text representation of months -- (from DATE_CONSTANTS) Max_weeks_in_year: INTEGER_32 = 53 -- Maximun number of weeks in a year -- (from DATE_CONSTANTS) minute: INTEGER_32 -- Minute of the current object -- (from DATE_TIME_MEASUREMENT) ensure -- from DATE_TIME_MEASUREMENT same_minute: Result = time.minute Minutes_in_hour: INTEGER_32 = 60 -- Number of minutes in an hour -- (from TIME_CONSTANTS) month: INTEGER_32 -- Month of the current object -- (from DATE_TIME_MEASUREMENT) ensure -- from DATE_TIME_MEASUREMENT same_month: Result = date.month Months_in_year: INTEGER_32 = 12 -- Number of months in year -- (from DATE_CONSTANTS) months_text: ARRAY [STRING_8] -- Short text representation of months -- (from DATE_CONSTANTS) origin_date_time: detachable DATE_TIME -- Origin date time of duration second: INTEGER_32 -- Second of the current object -- (from DATE_TIME_MEASUREMENT) ensure -- from DATE_TIME_MEASUREMENT same_second: Result = time.second seconds_count: INTEGER_64 -- Total number of seconds of current duration require has_origin: has_origin_date_time Seconds_in_day: INTEGER_32 = 86400 -- Number of seconds in an hour -- (from TIME_CONSTANTS) Seconds_in_hour: INTEGER_32 = 3600 -- Number of seconds in an hour -- (from TIME_CONSTANTS) Seconds_in_minute: INTEGER_32 = 60 -- Number of seconds in a minute -- (from TIME_CONSTANTS) time: TIME_DURATION -- Time part of current duration time_default_format_string: STRING_8 -- Default output format for times -- (from TIME_CONSTANTS) year: INTEGER_32 -- Year of the current object -- (from DATE_TIME_MEASUREMENT) ensure -- from DATE_TIME_MEASUREMENT same_year: Result = date.year zero: like Current -- Neutral element for "+" and "-" ensure -- from GROUP_ELEMENT result_exists: Result /= Void feature -- Comparison frozen deep_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void -- or attached to isomorphic object structures? -- (from ANY) ensure -- from ANY instance_free: class shallow_implies_deep: standard_equal (a, b) implies Result both_or_none_void: (a = Void) implies (Result = (b = Void)) same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b)) symmetric: Result implies deep_equal (b, a) frozen equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void or attached -- to objects considered equal? -- (from ANY) ensure -- from ANY instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.is_equal (b)) frozen is_deep_equal alias "≡≡≡" (other: DATE_TIME_DURATION): BOOLEAN -- Are Current and other attached to isomorphic object structures? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY shallow_implies_deep: standard_is_equal (other) implies Result same_type: Result implies same_type (other) symmetric: Result implies other.is_deep_equal (Current) is_equal (other: like Current): BOOLEAN -- Are the current duration an other equal? require -- from ANY other_not_void: other /= Void ensure -- from ANY symmetric: Result implies other ~ Current consistent: standard_is_equal (other) implies Result is_greater alias ">" (other: DATE_TIME_DURATION): BOOLEAN -- Is current object greater than other? -- (from PART_COMPARABLE) require -- from PART_COMPARABLE other_exists: other /= Void is_greater_equal alias ">=" alias "" (other: DATE_TIME_DURATION): BOOLEAN -- Is current object greater than or equal to other? -- (from PART_COMPARABLE) require -- from PART_COMPARABLE other_exists: other /= Void is_less alias "<" (other: like Current): BOOLEAN -- Is the current duration smaller than other? -- False if either is not definite require -- from PART_COMPARABLE other_exists: other /= Void ensure then non_definite_result: not (definite and other.definite) implies not Result is_less_equal alias "<=" alias "" (other: DATE_TIME_DURATION): BOOLEAN -- Is current object less than or equal to other? -- (from PART_COMPARABLE) require -- from PART_COMPARABLE other_exists: other /= Void frozen standard_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void or attached to -- field-by-field identical objects of the same type? -- Always uses default object comparison criterion. -- (from ANY) ensure -- from ANY instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.standard_is_equal (b)) frozen standard_is_equal alias "" (other: DATE_TIME_DURATION): BOOLEAN -- Is other attached to an object of the same type -- as current object, and field-by-field identical to it? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY same_type: Result implies same_type (other) symmetric: Result implies other.standard_is_equal (Current) feature -- Status report canonical (start_date: DATE_TIME): BOOLEAN -- Are the time and date parts of the same sign, -- and both canonical? require start_date_not_void: start_date /= Void conforms_to (other: ANY): BOOLEAN -- Does type of current object conform to type -- of other (as per Eiffel: The Language, chapter 13)? -- (from ANY) require -- from ANY other_not_void: other /= Void definite: BOOLEAN -- Is this duration date-independent? -- (True if it only uses day, not year and month) ensure result_definition: Result = (year = 0 and then month = 0) has_origin_date_time: BOOLEAN -- Has an origin_date_time been set? is_leap_year (y: INTEGER_32): BOOLEAN -- Is year y a leap year? -- (from DATE_CONSTANTS) is_negative: BOOLEAN -- Is duration negative? -- (from DURATION) is_positive: BOOLEAN -- Is duration positive? is_zero: BOOLEAN -- Is duration zero? -- (from DURATION) same_type (other: ANY): BOOLEAN -- Is type of current object identical to type of other? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY definition: Result = (conforms_to (other) and other.conforms_to (Current)) feature -- Status setting set_origin_date_time (dt: detachable DATE_TIME) -- Set origin_date_time to dt. ensure origin_date_time_set: origin_date_time = dt origin_date_set: dt /= Void implies (dt.date = date.origin_date) feature -- Element change identity alias "+": DATE_TIME_DURATION -- Unary plus -- (from DURATION) ensure -- from GROUP_ELEMENT result_exists: Result /= Void result_definition: Result.is_equal (Current) minus alias "-" (other: DATE_TIME_DURATION): DATE_TIME_DURATION -- Difference with other -- (from DURATION) require -- from GROUP_ELEMENT other_exists: other /= Void ensure -- from GROUP_ELEMENT result_exists: Result /= Void feature -- Conversion time_to_canonical: like Current -- A new duration, equivalent to current one -- but time is canonical and has the same sign as date require definite_duration: definite ensure time_canonical: Result.time.canonical same_sign: ((Result.date > date.zero) implies (Result.time >= time.zero)) and then ((Result.date < date.zero) implies (Result.time <= time.zero)) to_canonical (start_date: DATE_TIME): like Current -- A new duration, equivalent to current one -- and canonical for start_date ensure canonical_set: Result.canonical (start_date) duration_not_changed: equal (start_date + Current, start_date + Result) feature -- Duplication copy (other: DATE_TIME_DURATION) -- Update current object using fields of object attached -- to other, so as to yield equal objects. -- (from ANY) require -- from ANY other_not_void: other /= Void type_identity: same_type (other) ensure -- from ANY is_equal: Current ~ other frozen deep_copy (other: DATE_TIME_DURATION) -- Effect equivalent to that of: -- copy (other . deep_twin) -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY deep_equal: deep_equal (Current, other) frozen deep_twin: DATE_TIME_DURATION -- New object structure recursively duplicated from Current. -- (from ANY) ensure -- from ANY deep_twin_not_void: Result /= Void deep_equal: deep_equal (Current, Result) frozen standard_copy (other: DATE_TIME_DURATION) -- Copy every field of other onto corresponding field -- of current object. -- (from ANY) require -- from ANY other_not_void: other /= Void type_identity: same_type (other) ensure -- from ANY is_standard_equal: standard_is_equal (other) frozen standard_twin: DATE_TIME_DURATION -- New object field-by-field identical to other. -- Always uses default copying semantics. -- (from ANY) ensure -- from ANY standard_twin_not_void: Result /= Void equal: standard_equal (Result, Current) frozen twin: DATE_TIME_DURATION -- New object equal to Current -- twin calls copy; to change copying/twinning semantics, redefine copy. -- (from ANY) ensure -- from ANY twin_not_void: Result /= Void is_equal: Result ~ Current feature -- Basic operations day_add (d: INTEGER_32) -- Add d days to the current duration. ensure result_definition: day = old day + d frozen default: detachable DATE_TIME_DURATION -- Default value of object's type -- (from ANY) frozen default_pointer: POINTER -- Default value of type POINTER -- (Avoid the need to write p.default for -- some p of type POINTER.) -- (from ANY) ensure -- from ANY instance_free: class default_rescue -- Process exception for routines with no Rescue clause. -- (Default: do nothing.) -- (from ANY) div (i, j: INTEGER_32): INTEGER_32 -- (i \\ j) if i positive -- (i \\ j + 1) if i negative -- (from TIME_UTILITY) ensure -- from TIME_UTILITY result_definition: i = j * Result + mod (i, j) frozen do_nothing -- Execute a null action. -- (from ANY) ensure -- from ANY instance_free: class mod (i, j: INTEGER_32): INTEGER_32 -- (i \\ j) if i positive -- (i \\ j + j) if i negative -- (from TIME_UTILITY) ensure -- from TIME_UTILITY positive_result: Result >= 0 result_definition: i = j * div (i, j) + Result opposite alias "-": like Current -- Unary minus require -- from GROUP_ELEMENT True ensure -- from GROUP_ELEMENT result_exists: Result /= Void result_definition: (Result + Current).is_equal (zero) ensure then origin_date_time: equal (origin_date_time, Result.origin_date_time) plus alias "+" (other: like Current): like Current -- Sum with other (commutative) require -- from GROUP_ELEMENT other_exists: other /= Void ensure -- from GROUP_ELEMENT result_exists: Result /= Void commutative: Result.is_equal (other + Current) ensure then origin_date_time: equal (origin_date_time, Result.origin_date_time) feature -- Element Change set_date (d: DATE_DURATION) -- Set date to d. require d_exists: d /= Void ensure date_set: date = d set_time (t: TIME_DURATION) -- Set time to t. require t_exists: time /= Void ensure time_set: time = t feature -- Output Io: STD_FILES -- Handle to standard file setup -- (from ANY) ensure -- from ANY instance_free: class io_not_void: Result /= Void out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY out_not_void: Result /= Void print (o: detachable ANY) -- Write terse external representation of o -- on standard output. -- (from ANY) ensure -- from ANY instance_free: class frozen tagged_out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY tagged_out_not_void: Result /= Void feature -- Platform Operating_environment: OPERATING_ENVIRONMENT -- Objects available from the operating system -- (from ANY) ensure -- from ANY instance_free: class operating_environment_not_void: Result /= Void invariant date_exists: date /= Void time_exists: time /= Void origin_constraint: (origin_date_time = Void and date.origin_date = Void) or else (attached origin_date_time as l_origin_1 and then l_origin_1.date = date.origin_date) same_signs: (has_origin_date_time and then attached origin_date_time as l_origin_2 and then canonical (l_origin_2)) implies ((date.is_positive or date.is_zero) and (time.is_positive or time.is_zero)) or else ((date.is_negative or date.is_zero) and (time.is_negative or time.is_zero)) -- from DURATION sign_correctness: is_positive xor is_negative xor is_zero -- from ANY reflexive_equality: standard_is_equal (Current) reflexive_conformance: conforms_to (Current) -- from GROUP_ELEMENT neutral_addition: is_equal (Current + zero) self_subtraction: zero.is_equal (Current - Current) -- from DATE_TIME_MEASUREMENT date_exists: date /= Void time_exists: time /= Void note ca_ignore: "CA011", "CA011: too many arguments" copyright: "Copyright (c) 1984-2019, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- class DATE_TIME_DURATION
Classes Clusters Cluster hierarchy Chart Relations Flat contracts Go to:

-- Generated by Eiffel Studio --
For more details: eiffel.org