From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.182.94.203 with SMTP id de11mr1251136obb.14.1446395619324; Sun, 01 Nov 2015 08:33:39 -0800 (PST) X-Received: by 10.182.87.229 with SMTP id bb5mr176441obb.3.1446395619296; Sun, 01 Nov 2015 08:33:39 -0800 (PST) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!news.glorb.com!i2no2125180igv.0!news-out.google.com!z4ni42968ign.0!nntp.google.com!i2no1441950igv.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Sun, 1 Nov 2015 08:33:39 -0800 (PST) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=2a02:1205:5042:d0a0:e132:74ef:bd8a:10de; posting-account=gRqrnQkAAAAC_02ynnhqGk1VRQlve6ZG NNTP-Posting-Host: 2a02:1205:5042:d0a0:e132:74ef:bd8a:10de References: User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <93664973-e930-45cc-bdf3-bf0bd6527f12@googlegroups.com> Subject: Re: A few questions From: gautier_niouzes@hotmail.com Injection-Date: Sun, 01 Nov 2015 16:33:39 +0000 Content-Type: text/plain; charset=ISO-8859-1 Xref: news.eternal-september.org comp.lang.ada:28164 Date: 2015-11-01T08:33:39-08:00 List-Id: What about something like this: Begin_Date: Time:= ...; End_Date: Time:= ...; Day_Seconds: constant Duration:= 86400.0; Days: constant Natural:= Natural(End_Date-Begin_Date) / Day_Seconds; subtype Period is Natural range 0..Days; ? As a bonus, you have below a display function from my toolbox :-) . _________________________ Gautier's Ada programming http://gautiersblog.blogspot.com/search/label/Ada NB: follow the above link for a valid e-mail address -- Time_display returns date & time, current or given. -- E.g.: "2013/08/01 05:49:51" -- Useful for a log file or a display of a lengthy operation. -- This is Ada 83 compatible. Format accepted by SQL queries. -- -- 32- or 64-bit: DEC/Compaq/HP Ada (83), GNAT (95/2005), ObjectAda (95) -- 16-bit: Meridian (83) -> Long_Integer is 32-bit -- 16-bit: Janus 2.x (83): KO: no Long_Integer -- -- Test program in following comment: -- -- with Text_IO,Time_display;procedure Test is begin Text_IO.Put(Time_display);end; with Calendar; function Time_display( T : Calendar.Time:= Calendar.Clock; Seconds : Boolean := True; Intra_day: Boolean := True ) return String is use Calendar; subtype Sec_int is Long_Integer; -- must contain 86_400 s : constant Sec_int:= Sec_int( Calendar.Seconds(T) ); m : constant Sec_int:= s / 60; -- + 100: trick for obtaining 0x sY : constant String:= Integer'Image( Year(T)); sM : constant String:= Integer'Image( Month(T) + 100); sD : constant String:= Integer'Image( Day(T) + 100); shr: constant String:= Sec_int'Image( m / 60 + 100); smn: constant String:= Sec_int'Image( m mod 60 + 100); ssc: constant String:= Sec_int'Image( s mod 60 + 100); -- function Optional_seconds return String is begin if Seconds then return ':' & ssc( ssc'Last-1 .. ssc'Last ); else return ""; end if; end Optional_seconds; -- function Optional_intra_day return String is begin if Intra_day then return " " & shr( shr'Last-1 .. shr'Last ) & ':' & smn( smn'Last-1 .. smn'Last ) & Optional_seconds; else return ""; end if; end Optional_intra_day; begin return sY( sY'Last-3 .. sY'Last ) & '/' & -- not Year 10'000 compliant. sM( sM'Last-1 .. sM'Last ) & '/' & sD( sD'Last-1 .. sD'Last ) & Optional_intra_day; end Time_display;