From: Robert Dewar <robert_dewar@my-deja.com>
Subject: Re: C date package
Date: 2000/05/10
Date: 2000-05-10T00:00:00+00:00 [thread overview]
Message-ID: <8fahfv$mgt$1@nnrp1.deja.com> (raw)
In-Reply-To: 3918BB77.693C70D6@research.canon.com.au
In article <3918BB77.693C70D6@research.canon.com.au>,
Geoff Bull <geoff@research.canon.com.au> wrote:
> Oops, I posted to comp.lang.ada by mistake!
> This was a thread on team-ada discussing which started with
> the "2038 bug".
> Fair enough, weak was probably the wrong word (maybe I should
> used "basic")
> - it doesn't even split out hours and minutes.
By the way, have a look at the package GNAT.Calendar in GNAT
3.13 which fills in some of the gaps. In fact let me post the
spec here. There is also a GNAT.Calendar.Time_IO that allows
flexible output of times
-- This package extends Ada.Calendar to handle Hour, Minute,
Second,
-- Second_Duration and Day_Of_Week and Day_In_Year from
Calendar.Time.
-- Second_Duration precision depends on the target clock
precision.
--
-- GNAT.Calendar provides the same kind of abstraction found in
-- Ada.Calendar. It provides Split and Time_Of to build and
split a Time
-- data. And it provides accessor functions to get only one of
Hour, Minute,
-- Second, Second_Duration. Other functions are to access more
advanced
-- valueas like Day_Of_Week, Day_In_Year and Week_In_Year.
with Ada.Calendar;
with Interfaces.C;
package GNAT.Calendar is
type Day_Name is
(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday,
Sunday);
subtype Hour_Number is Natural range 0 .. 23;
subtype Minute_Number is Natural range 0 .. 59;
subtype Second_Number is Natural range 0 .. 59;
subtype Second_Duration is Ada.Calendar.Day_Duration
range 0.0 .. 1.0;
subtype Day_In_Year_Number is Positive range 1 .. 366;
subtype Week_In_Year_Number is Positive range 1 .. 53;
function Hour (Date : Ada.Calendar.Time) return
Hour_Number;
function Minute (Date : Ada.Calendar.Time) return
Minute_Number;
function Second (Date : Ada.Calendar.Time) return
Second_Number;
function Sub_Second (Date : Ada.Calendar.Time) return
Second_Duration;
-- Hour, Minute, Sedond and Sub_Second returns the complete
time data for
-- the Date (H:M:S.SS). See Ada.Calendar for Year, Month,
Day accessors.
-- Second_Duration precision depends on the target clock
precision.
function Day_Of_Week (Date : Ada.Calendar.Time) return
Day_Name;
-- Return the day name.
function Day_In_Year (Date : Ada.Calendar.Time) return
Day_In_Year_Number;
-- Returns the day number in the year. (1st January is day 1
and 31st
-- December is day 365 or 366 for leap year).
function Week_In_Year (Date : Ada.Calendar.Time) return
Week_In_Year_Number;
-- Returns the week number in the year with Monday as first
day of week
procedure Split
(Date : Ada.Calendar.Time;
Year : out Ada.Calendar.Year_Number;
Month : out Ada.Calendar.Month_Number;
Day : out Ada.Calendar.Day_Number;
Hour : out Hour_Number;
Minute : out Minute_Number;
Second : out Second_Number;
Sub_Second : out Second_Duration);
-- Split the standard Ada.Calendar.Time data in date data
(Year, Month,
-- Day) and Time data (Hour, Minute, Second, Sub_Second)
function Time_Of
(Year : Ada.Calendar.Year_Number;
Month : Ada.Calendar.Month_Number;
Day : Ada.Calendar.Day_Number;
Hour : Hour_Number;
Minute : Minute_Number;
Second : Second_Number;
Sub_Second : Second_Duration := 0.0)
return Ada.Calendar.Time;
-- Returns an Ada.Calendar.Time data built from the date and
time values.
-- C timeval conversion
-- C timeval represent a duration (used in Select for
example). This
-- structure is composed of a number of seconds and a number
of micro
-- seconds. The timeval structure is not exposed here
because its
-- definition is target dependent. Interface to C programs
is done via a
-- pointer to timeval structure.
type timeval is private;
function To_Duration (T : access timeval) return Duration;
function To_Timeval (D : Duration) return timeval;
private
-- This is a dummy declaration that should be the largest
possible timeval
-- structure of all supported targets.
type timeval is array (1 .. 2) of Interfaces.C.long;
function Julian_Day
(Year : Ada.Calendar.Year_Number;
Month : Ada.Calendar.Month_Number;
Day : Ada.Calendar.Day_Number)
return Integer;
-- Compute Julian day number.
--
-- The code of this function is a modified version of
algorithm
-- 199 from the Collected Algorithms of the ACM.
-- The author of algorithm 199 is Robert G. Tantzen.
end GNAT.Calendar;
-- This package augments standard Ada.Text_IO with facilities
for input
-- and output of time values in standardized format.
package GNAT.Calendar.Time_IO is
Picture_Error : exception;
type Picture_String is new String;
-- This is a string to describe date and time output format.
The string is
-- a set of standard character and special tag that are
replaced by the
-- corresponding values. It follows the GNU Date
specification. Here are
-- the recognized directives :
--
-- % a literal %
-- n a newline
-- t a horizontal tab
--
-- Time fields:
--
-- %H hour (00..23)
-- %I hour (01..12)
-- %k hour ( 0..23)
-- %l hour ( 1..12)
-- %M minute (00..59)
-- %p locale's AM or PM
-- %r time, 12-hour (hh:mm:ss [AP]M)
-- %s seconds since 1970-01-01 00:00:00 UTC
-- (a nonstandard extension)
-- %S second (00..59)
-- %T time, 24-hour (hh:mm:ss)
--
-- Date fields:
--
-- %a locale's abbreviated weekday name (Sun..Sat)
-- %A locale's full weekday name,
variable length
-- (Sunday..Saturday)
-- %b locale's abbreviated month name (Jan..Dec)
-- %B locale's full month name,
variable length
-- (January..December)
-- %c locale's date and time (Sat Nov 04 12:02:33
EST 1989)
-- %d day of month (01..31)
-- %D date (mm/dd/yy)
-- %h same as %b
-- %j day of year (001..366)
-- %m month (01..12)
-- %U week number of year with Sunday as first
day of week
-- (00..53)
-- %w day of week (0..6) with 0 corresponding to
Sunday
-- %W week number of year with Monday as first
day of week
-- (00..53)
-- %x locale's date representation (mm/dd/yy)
-- %y last two digits of year (00..99)
-- %Y year (1970...)
--
-- By default, date pads numeric fields with
zeroes. GNU date
-- recognizes the following nonstandard numeric
modifiers:
--
-- - (hyphen) do not pad the field
-- _ (underscore) pad the field with spaces
ISO_Date : constant Picture_String;
US_Date : constant Picture_String;
European_Date : constant Picture_String;
function Image
(Date : Ada.Calendar.Time;
Picture : Picture_String)
return String;
-- Return Date as a string with format Picture.
-- raise Picture_Error if picture string is wrong
procedure Put_Time
(Date : Ada.Calendar.Time;
Picture : Picture_String);
-- Put Date with format Picture.
-- raise Picture_Error if picture string is wrong
private
ISO_Date : constant Picture_String := "%Y/%m/%d";
US_Date : constant Picture_String := "%m/%d/%y";
European_Date : constant Picture_String := "%d/%m/%y";
end GNAT.Calendar.Time_IO;
Sent via Deja.com http://www.deja.com/
Before you buy.
next prev parent reply other threads:[~2000-05-10 0:00 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <l0313030eb53d1408aee7@[144.205.16.58]>
2000-05-09 0:00 ` C date package Geoff Bull
2000-05-09 0:00 ` Geoff Bull
2000-05-09 0:00 ` Robert Dewar
2000-05-10 0:00 ` Geoff Bull
2000-05-10 0:00 ` Robert Dewar [this message]
2000-05-10 0:00 ` Geoff Bull
2000-05-10 0:00 ` Ken Garlington
2000-05-10 0:00 ` Geoff Bull
2000-05-10 0:00 ` Ada Calendar oddity <was Re: C date package> Preben Randhol
2000-05-10 0:00 ` Tarjei Tj�stheim Jensen
2000-05-11 0:00 ` Geoff Bull
2000-05-11 0:00 ` Gautier
2000-05-12 0:00 ` Geoff Bull
2000-05-12 0:00 ` Gautier
2000-05-11 0:00 ` Al Christians
2000-05-11 0:00 ` Charles Hixson
2000-05-11 0:00 ` Tarjei Tj�stheim Jensen
2000-05-12 0:00 ` Charles Hixson
2000-05-12 0:00 ` Tarjei Tj�stheim Jensen
2000-05-10 0:00 ` Robert A Duff
2000-05-10 0:00 ` Preben Randhol
2000-05-10 0:00 ` Charles Hixson
2000-05-11 0:00 ` Geoff Bull
2000-05-11 0:00 ` Charles Hixson
2000-05-12 0:00 ` Geoff Bull
2000-05-17 0:00 ` Robert I. Eachus
2000-05-19 0:00 ` Geoff Bull
2000-05-19 0:00 ` Robert I. Eachus
2000-05-21 0:00 ` Robert Dewar
2000-05-21 0:00 ` Robert Dewar
[not found] ` <392869F0.D88F056A@acenet.com.au>
2000-05-22 0:00 ` Tarjei Tj�stheim Jensen
2000-05-27 0:00 ` Reinert Korsnes
2000-05-27 0:00 ` Tarjei Tj�stheim Jensen
2000-06-03 0:00 ` Robert I. Eachus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox