Re: Standard library - date and time
- Posted by CChris <christian.cuvier at ?gricu?ture.gouv.fr> Apr 23, 2008
- 1104 views
yuku wrote: > > Jeremy Cowgar wrote: > > 1. Let's not change the existing date() and time() functions. We are adding > > to the standard library, not redesigning it. > > > > 2. We should prefix some things. For instance, the map functions deal with > > maps > > and task function deal with tasks. > > > > I have found three email addresses for Carl (author of datetime) and have > > sent > > an email asking if it could be included in Euphoria. datetime has a > > copyright > > statement and no released license. > > Hi, > > I committed the prototype of datetime functions by adhering to the points > above. > We defined a new type: datetime (the implementation is not done, waiting > for the permission as mentioned above). > The prefix is datetime_ (should it be date_ ? but since the type name > is datetime, will it confuse users?) > > To maintain compatibility with built-in date(), the datetime object > can be created using datetime_from_date(). > The now function is named datetime_now(). > > Here are the function prototypes (some C-style for clarity). > Please give suggestions etc. > > -- Date and Time functions > -- 2008 > -- note 2008-04-23: ONLY CONTAINS FUNCTION PROTOTYPES > -- No timezone offset. > > -- global type datetime(object o) > > -- datetime datetime_new(int year, int month, int date, int hour, int minute, > int second) > -- Creates the datetime object for the specified parameters > > -- int datetime_compare(datetime dt1, datetime dt2) > -- Compare the receiver to the specified Date to determine the relative > ordering. > > -- returns -1 or 0 or 1 > > -- datetime datetime_from_date(object date) > -- Converts the built-in date() format to datetime format > > -- datetime datetime_now() > -- Returns the datetime object for now. No timezones! > > -- int datetime_get_hour(datetime dt) > -- Answers the gregorian calendar hour of the day. > > -- int datetime_get_minute(datetime dt) > -- Answers the gregorian calendar minute of the hour. > > -- int datetime_get_second(datetime dt) > -- Answers the gregorian calendar second of the minute. > > -- int datetime_get_year() > -- Answers the gregorian calendar year since 1900. > > -- int datetime_get_month(datetime dt) > -- Answers the gregorian calendar month. > > -- int datetime_get_date(datetime dt) > -- Answers the gregorian calendar day of the month. > > -- int datetime_get_day(datetime dt) > -- Answers the gregorian calendar day of the week. > > -- datetime datetime_set_hour(integer dt) > -- Sets the gregorian calendar hour of the day. > global function datetime_set_hour(integer dt) > > -- datetime datetime_set_minute(int dt) > -- Sets the gregorian calendar minute of the hour. > > -- datetime datetime_set_second(int dt) > -- Sets the gregorian calendar second of the minute. > > -- datetime datetime_set_year() > -- Sets the gregorian calendar year since 1900. > > -- datetime datetime_set_month(datetime dt) > -- Sets the gregorian calendar month. > > -- datetime datetime_set_date(datetime dt) > -- Sets the gregorian calendar day of the month. > > -- datetime datetime_parse(ustring string) > -- parse the string and returns the datetime > > -- ustring datetime_format(ustring format) > -- format the date according to the format string > -- format string some taken from date(1) > -- %% a literal % > -- %a locale's abbreviated weekday name (e.g., Sun) > -- %A locale's full weekday name (e.g., Sunday) > -- %b locale's abbreviated month name (e.g., Jan) > -- %B locale's full month name (e.g., January) > -- %C century; like %Y, except omit last two digits (e.g., 21) > -- %d day of month (e.g, 01) > -- %g last two digits of year of ISO week number (see %G) > -- %H hour (00..23) > -- %I hour (01..12) > -- %j day of year (001..366) > -- %k hour ( 0..23) > -- %l hour ( 1..12) > -- %m month (01..12) > -- %M minute (00..59) > -- %p locale's equivalent of either AM or PM; blank if not known > -- %P like %p, but lower case > -- %s seconds since 1970-01-01 00:00:00 UTC > -- %S second (00..60) > -- %u day of week (1..7); 1 is Monday > -- %w day of week (0..6); 0 is Sunday > -- %y last two digits of year (00..99) > -- %Y year > > -- atom datetime_to_unix(datetime dt) > -- returns the number of seconds since 1970-1-1 0:0 (no timezone!) > > -- datetime datetime_add_second(datetime dt, atom seconds) > -- adds the date with specified number of seconds > > -- datetime datetime_add_day(datetime dt, atom days) > -- adds the date with specified number of days > > -- atom datetime_diff_second(datetime dt1, datetime dt2) > -- returns the number of seconds between two datetimes > > -- atom datetime_diff_day(datetime dt1, datetime dt2) > -- returns the number of days between two datetimes I don't use these routines much, so I won't comment on the list. Prefixes should be as short as possible, as the language is already quite "typose". Make it dt_ for instance. Another route would be to allow defining aliases, so that any programer could rename clumsy names.
alias datetime_datetime_to_date dt2d
would be more efficient than
function dt2d(args) return datetime_datetime_to_date(args) end function
CChis