source: project/wiki/eggref/3/srfi-19 @ 13971

Last change on this file since 13971 was 13971, checked in by Kon Lovett, 11 years ago

Release.

File size: 22.6 KB
Line 
1[[tags: egg]]
2
3== srfi-19
4
5Time Data Types and Procedures
6
7[[toc:]]
8
9
10== Documentation
11
12This is a Chicken port of SRFI-19. This document only describes the extensions.
13For the SRFI-19 API see [[http://srfi.schemers.org/srfi-19/srfi-19.html|SRFI-19]].
14
15=== Core Procedures
16
17<enscript language=scheme>
18(require-extension srfi-19-core)
19</enscript>
20
21==== SRFI-19 Document Changes
22
23The '''nanosecond''' time object element is an integer between 0 and
24999,999,999 inclusive. (The SRFI-19 document mis-states the value.)
25
26A ''tz-offset'' value follows ISO 8601; positive for '''east''' of UTC, and
27negative for '''west'''. This is the '''opposite''' of the POSIX TZ environment
28variable.
29
30Where the SRFI-19 document states a ''tz-offset'' argument a
31timezone-components object is also legal.
32
33The {{string->date}} procedure allows the template-name argument to be
34optional. When missing the locale's date-time-format string is used. The
35supplied locale bundle's strings are invertible.
36
37===== make-date
38
39<procedure>(make-date NANOSECOND SECOND MINUTE HOUR DAY MONTH YEAR ZONE-OFFSET [TZ-NAME #f] [DST-FLAG #f])</procedure>
40
41Same as SRFI-19 except for the optional parameters and allowing a
42timezone-components object for the {{ZONE-OFFSET}}.
43
44===== read-leap-second-table
45
46<procedure>(read-leap-second-table FILENAME)</procedure>
47
48Sets the leap second table from the specified {{FILENAME}}.
49
50The file format is the same as the "tai-utc.dat" file in the distribution.
51Provided by the U.S. Naval Observatory.
52
53===== leap-year?
54
55<procedure>(leap-year? DATE)</procedure>
56
57Does the specified {{DATE}} fall on a leap year?
58
59==== SRFI-18 Time
60
61Due to conflicts between SRFI-18 and SRFI-19 procedure variables
62{{srfi-19:current-time}} is a synonym for {{current-time}} and
63{{srfi-19:time?}} is a synonym for {{time?}}.
64
65===== time->srfi-18-time
66
67<procedure>(time->srfi-18-time TIME)</procedure>
68
69Converts a SRFI-19 time object to a SRFI-18 time object. The conversion is
70really only meaningful for time-duration, but any time-type is accepted.
71
72===== srfi-18-time->time
73
74<procedure>(srfi-18-time->time TIME)</procedure>
75
76Converts a SRFI-18 time object into a SRFI-19 time-duration object.
77
78==== Time Conversion
79
80===== seconds->time/type
81
82<procedure>(seconds->time/type SECONDS [TIME-TYPE time-duration])</procedure>
83
84Converts a {{SECONDS}} value, may be fractional, into a {{TIME-TYPE}} time
85object.
86
87===== seconds->date/type
88
89<procedure>(seconds->date/type SECONDS [TIMEZONE-INFO #f])</procedure>
90
91Converts a {{SECONDS}} value, which may be fractional, into a date object. The
92{{TIMEZONE-INFO}} is {{#t}} for the local timezone, {{#f}} for the utc
93timezone, or a timezone-components object.
94
95{{SECONDS}} is relative to 00:00:00 January 1, 1970 UTC.
96
97===== time->nanoseconds
98
99<procedure>(time->nanoseconds TIME)</procedure>
100
101Returns the {{TIME}} object value as a nanoseconds value.
102
103===== nanoseconds->time
104
105<procedure>(nanoseconds->time NANOSECONDS [TIME-TYPE time-duration])</procedure>
106
107Returns the {{NANOSECONDS}} value as a time {{TIME-TYPE}} object.
108
109===== nanoseconds->seconds
110
111<procedure>(nanoseconds->seconds NANOSECONDS)</procedure>
112
113Returns the {{NANOSECONDS}} value as an inexact seconds value.
114
115===== time->milliseconds
116
117<procedure>(time->milliseconds TIME)</procedure>
118
119Returns the {{TIME}} object value as a milliseconds value.
120
121===== milliseconds->time
122
123<procedure>(milliseconds->time MILLISECONDS [TIME-TYPE time-duration])</procedure>
124
125Returns the {{MILLISECONDS}} value as a time {{TIME-TYPE}} object.
126
127===== milliseconds->seconds
128
129<procedure>(milliseconds->seconds MILLISECONDS)</procedure>
130
131Returns the {{MILLISECONDS}} value as an inexact seconds value.
132
133===== time->date
134
135<procedure>(time->date TIME)</procedure>
136
137Returns the {{TIME}} object value as a date. A shorthand for the
138{{(time-*->date...)}} procedures.
139
140===== time->julian-day
141
142<procedure>(time->julian-day TIME)</procedure>
143
144Returns the julian day for the {{TIME}} object.
145
146===== time->modified-julian-day
147
148<procedure>(time->modified-julian-day TIME)</procedure>
149
150Returns the modified julian day for the {{TIME}} object.
151
152==== Time Arithmetic
153
154===== make-duration
155
156<procedure>(make-duration [#:days 0] [#:hours 0] [#:minutes 0] [#:seconds 0] [#:milliseconds 0] [#:microseconds 0] [#:nanoseconds 0])</procedure>
157
158Returns a time-object of clock-type {{time-duration}} where the seconds and
159nanoseconds values are calculated by summing the keyword arguments.
160
161{{ONE-SECOND-DURATION}} and {{ONE-NANOSECOND-DURATION}} are pre-defined.
162
163===== divide-duration
164
165<procedure>(divide-duration DURATION NUMBER)</procedure>
166
167Returns a duration, from {{DURATION}}, divided by {{NUMBER}}, without
168remainder.
169
170===== divide-duration!
171
172<procedure>(divide-duration! DURATION NUMBER)</procedure>
173
174Returns {{DURATION}}, divided by {{NUMBER}}, without remainder.
175
176===== multiply-duration
177
178<procedure>(multiply-duration DURATION NUMBER)</procedure>
179
180Returns a duration, from {{DURATION}}, multiplied by {{NUMBER}}, truncated.
181
182===== multiply-duration!
183
184<procedure>(multiply-duration! DURATION NUMBER)</procedure>
185
186Returns {{DURATION}}, multiplied by {{NUMBER}}, truncated.
187
188===== time-negative?
189
190<procedure>(time-negative? TIME)</procedure>
191
192Is {{TIME}} negative?
193
194A time object will never have a negative nanoseconds value.
195
196===== time-positve?
197
198<procedure>(time-positve? TIME)</procedure>
199
200Is {{TIME}} positive?
201
202===== time-zero?
203
204<procedure>(time-zero? TIME)</procedure>
205
206Is {{TIME}} zero?
207
208===== time-abs
209
210<procedure>(time-abs TIME)</procedure>
211
212Returns the absolute time value, from {{TIME}}.
213
214===== time-abs!
215
216<procedure>(time-abs! TIME)</procedure>
217
218Returns the absolute {{TIME}} value.
219
220===== time-negate
221
222<procedure>(time-negate TIME)</procedure>
223
224Returns the sign inverted time value, from {{TIME}}.
225
226===== time-negate!
227
228<procedure>(time-negate! TIME)</procedure>
229
230Returns the {{TIME}} sign inverted value.
231
232==== Time Comparison
233
234===== time-compare
235
236<procedure>(time-compare TIME1 TIME2)</procedure>
237
238Returns -1, 0, or 1.
239
240===== time-max
241
242<procedure>(time-max TIME1 [TIME2...])</procedure>
243
244Returns the maximum time object from {{TIME1 TIME2...}}.
245
246===== time-min
247
248<procedure>(time-min TIME1 [TIME2...])</procedure>
249
250Returns the minimum time object from {{TIME1 TIME2...}}.
251
252==== Dates
253
254===== default-date-clock-type
255
256<parameter>(default-date-clock-type [CLOCK-TYPE time-utc])</parameter>
257
258Sets or gets the clock-type used by default for conversion of a date to a time.
259
260===== copy-date
261
262<procedure>(copy-date DATE)</procedure>
263
264Returns an exact copy of the specified {{DATE}} object.
265
266===== date->time
267
268<procedure>(date->time DATE [CLOCK-TYPE (default-date-clock-type)])</procedure>
269
270Returns the specified {{DATE}} as a time-object of type {{CLOCK-TYPE}}.
271
272===== date-zone-name
273
274<procedure>(date-zone-name DATE)</procedure>
275
276Returns the timezone abbreviation of the specified {{DATE}} object. The result
277is either a string or {{#f}}.
278
279===== date-dst?
280
281<procedure>(date-dst? DATE)</procedure>
282
283Returns the daylight saving time flag of the specified {{DATE}} object.
284
285Only valid for "current" dates. Historical dates will not have a correct
286setting. Future dates cannot have a correct setting.
287
288==== Date Arithmetic
289
290===== date-difference
291
292<procedure>(date-difference DATE1 DATE2 [CLOCK-TYPE])</procedure>
293
294Returns the duration between {{DATE1}} and {{DATE2}}.
295
296===== date-add-duration
297
298<procedure>(date-add-duration DATE DURATION [CLOCK-TYPE])</procedure>
299
300Returns the {{DATE}} plus the {{DURATION}}.
301
302===== date-subtract-duration
303
304<procedure>(date-subtract-duration DATE DURATION [CLOCK-TYPE])</procedure>
305
306Returns the {{DATE}} minus the {{DURATION}}.
307
308==== Date Comparison
309
310===== date-compare
311
312<procedure>(date-compare DATE1 DATE2)</procedure>
313
314Returns -1, 0, or 1.
315
316===== date=?
317
318<procedure>(date=? DATE1 DATE2)</procedure>
319
320Is {{DATE1}} on {{DATE2}}?
321
322===== date>?
323
324<procedure>(date>? DATE1 DATE2)</procedure>
325
326Is {{DATE1}} after {{DATE2}}?
327
328===== date<?
329
330<procedure>(date<? DATE1 DATE2)</procedure>
331
332Is {{DATE1}} before {{DATE2}}?
333
334===== date>=?
335
336<procedure>(date>=? DATE1 DATE2)</procedure>
337
338Is {{DATE1}} after or on {{DATE2}}?
339
340===== date<=?
341
342<procedure>(date<=? DATE1 DATE2)</procedure>
343
344Is {{DATE1}} before or on {{DATE2}}?
345
346==== Timezone
347
348* Note that the daylight saving time (summer time) flag is '''always''' taken
349from the system, unless supplied. Any summer time rule component of a
350{{timezone-components}} object is '''not''' processed.
351
352Remember that SRFI-19 timezone offset follows ISO 8601.
353
354===== local-timezone-locale
355
356<parameter>(local-timezone-locale [TZ-COMPONENTS])</parameter>
357
358Gets or sets the local timezone-locale object.
359
360===== utc-timezone-locale
361
362<parameter>(utc-timezone-locale [TZ-COMPONENTS])</parameter>
363
364Gets or sets the utc timezone-locale object.
365
366Probably not a good idea to change the value.
367
368===== timezone-locale-name
369
370<procedure>(timezone-locale-name [TZ-COMPONENTS])</procedure>
371
372Returns the timezone-locale name of the supplied {{TZ-COMPONENTS}}, or the
373{{(local-timezone-locale)}} if missing.
374
375===== timezone-locale-offset
376
377<procedure>(timezone-locale-offset [TZ-COMPONENTS])</procedure>
378
379Returns the timezone-locale offset of the supplied {{TZ-COMPONENTS}}, or the
380{{(local-timezone-locale)}} if missing.
381
382===== timezone-locale-dst?
383
384<procedure>(timezone-locale-dst? [TZ-COMPONENTS])</procedure>
385
386Returns the timezone-locale daylight saving time flag of the supplied
387{{TZ-COMPONENTS}}, or the {{(local-timezone-locale)}} if missing.
388
389=== Time Period
390
391<enscript language=scheme>
392(require-extension srfi-19-period)
393</enscript>
394
395A time-period is an interval, [begin end), where begin and end are time objects
396of the same clock type. When end <= begin the interval is null.
397
398===== make-null-time-period
399
400<procedure>(make-null-time-period [CLOCK-TYPE (default-date-clock-type)])</procedure>
401
402Returns a null interval for the specified {{CLOCK-TYPE}}.
403
404===== make-time-period
405
406<procedure>(make-time-period BEGIN END [CLOCK-TYPE (default-date-clock-type)])</procedure>
407
408Returns a new time-period object. The clock types must be compatible.
409
410{{BEGIN}} maybe a seconds value, a date, or a time (except time-duration). A
411seconds value or date are converted to {{CLOCK-TYPE}}.
412
413{{END}} maybe a seconds value, a date, or a time. A seconds value or date are
414converted to the same clock type as {{BEGIN}}. A time-duration is treated as an
415offset from {{BEGIN}}.
416
417===== copy-time-period
418
419<procedure>(copy-time-period TIME-PERIOD)</procedure>
420
421Returns a copy of {{TIME-PERIOD}}.
422
423===== time-period-begin
424
425<procedure>(time-period-begin TIME-PERIOD)</procedure>
426
427Returns the start time for the {{TIME-PERIOD}}.
428
429===== time-period-end
430
431<procedure>(time-period-end TIME-PERIOD)</procedure>
432
433Returns the end time for the {{TIME-PERIOD}}.
434
435===== time-period-last
436
437<procedure>(time-period-last TIME-PERIOD)</procedure>
438
439Returns the last time for the {{TIME-PERIOD}}; (time-period-end - 1ns).
440
441===== time-period-type
442
443<procedure>(time-period-type TIME-PERIOD)</procedure>
444
445Returns the clock-type of the {{TIME-PERIOD}}.
446
447===== time-period?
448
449<procedure>(time-period? OBJECT)</procedure>
450
451Is {{OBJECT}} a time-period?
452
453===== time-period-null?
454
455<procedure>(time-period-null? TIME-PERIOD)</procedure>
456
457Is the {{TIME-PERIOD}} null?
458
459===== time-period-length
460
461<procedure>(time-period-length TIME-PERIOD)</procedure>
462
463Returns the time-duration of the {{TIME-PERIOD}}.
464
465===== time-period-compare
466
467<procedure>(time-period-compare TIME-PERIOD-1 TIME-PERIOD-2) => INTEGER</procedure>
468
469Returns {{-1}} when {{TIME-PERIOD-1}} < {{TIME-PERIOD-2}}, {{0}} when
470{{TIME-PERIOD-1}} = {{TIME-PERIOD-2}} and {{1}} {{TIME-PERIOD-1}} >
471{{TIME-PERIOD-2}}.
472
473===== time-period=?
474
475<procedure>(time-period=? TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
476
477Does {{TIME-PERIOD-1}} begin & end with {{TIME-PERIOD-2}}?
478
479===== time-period<?
480
481<procedure>(time-period<? TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
482
483Does {{TIME-PERIOD-1}} end before {{TIME-PERIOD-2}} begins?
484
485===== time-period>?
486
487<procedure>(time-period>? TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
488
489Does {{TIME-PERIOD-1}} begin after {{TIME-PERIOD-2}} ends?
490
491===== time-period<=?
492
493<procedure>(time-period<=? TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
494
495Does {{TIME-PERIOD-1}} end on or before {{TIME-PERIOD-2}} begins?
496
497===== time-period>=?
498
499<procedure>(time-period>=? TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
500
501Does {{TIME-PERIOD-1}} begin on or after {{TIME-PERIOD-2}} ends?
502
503===== time-period-preceding
504
505<procedure>(time-period-preceding TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
506
507Return the portion of {{TIME-PERIOD-1}} before {{TIME-PERIOD-2}} or {{#f}} when
508it doesn't precede.
509
510===== time-period-succeeding
511
512<procedure>(time-period-succeeding TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
513
514Return the portion of {{TIME-PERIOD-1}} after {{TIME-PERIOD-2}} or {{#f}} when
515it doesn't succeed.
516
517===== time-period-contains/period?
518
519<procedure>(time-period-contains/period? TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
520
521Is {{TIME-PERIOD-2}} within {{TIME-PERIOD-1}}?
522
523===== time-period-contains/time?
524
525<procedure>(time-period-contains/time? TIME-PERIOD TIME)</procedure>
526
527Is {{TIME}} within {{TIME-PERIOD}}?
528
529{{TIME}} is converted to a compatible clock-type if possible.
530
531===== time-period-contains/date?
532
533<procedure>(time-period-contains/date? TIME-PERIOD DATE)</procedure>
534
535Is {{DATE}} within {{TIME-PERIOD}}?
536
537{{DATE}} is converted to a compatible time if possible.
538
539===== time-period-contains?
540
541<procedure>(time-period-contains? TIME-PERIOD OBJECT)</procedure>
542
543Is {{OBJECT}} within {{TIME-PERIOD}}?
544
545{{OBJECT}} maybe a time, date, or time-period.
546
547===== time-period-intersects?
548
549<procedure>(time-period-intersects? TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
550
551Does {{TIME-PERIOD-2}} overlap {{TIME-PERIOD-1}}?
552
553===== time-period-intersection
554
555<procedure>(time-period-intersection TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
556
557The overlapping time-period of {{TIME-PERIOD-2}} and {{TIME-PERIOD-1}}, or
558{{#f}} when no overlap.
559
560===== time-period-union
561
562<procedure>(time-period-union TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
563
564Returns the time-period spanned by {{TIME-PERIOD-1}} and {{TIME-PERIOD-2}}, or
565{{#f}} when they do not intersect.
566
567===== time-period-span
568
569<procedure>(time-period-span TIME-PERIOD-1 TIME-PERIOD-2)</procedure>
570
571Returns the time-period spanned by {{TIME-PERIOD-1}} and {{TIME-PERIOD-2}},
572including any gaps.
573
574===== time-period-shift
575
576<procedure>(time-period-shift TIME-PERIOD DURATION)</procedure>
577
578Returns a copy of {{TIME-PERIOD}} shifted by {{DURATION}}.
579
580===== time-period-shift!
581
582<procedure>(time-period-shift! TIME-PERIOD DURATION)</procedure>
583
584Returns {{TIME-PERIOD}} shifted by {{DURATION}}.
585
586=== Input/Output Procedures
587
588<enscript language=scheme>
589(require-extension srfi-19-io)
590</enscript>
591
592===== format-date
593
594<procedure>(format-date DESTINATION DATE-FORMAT-STRING [DATE])</procedure>
595
596Displays a text form of the {{DATE}} on the {{DESTINATION}} using the
597{{DATE-FORMAT-STRING}}.
598
599When the destination is {{#t}} the {{(current-output-port)}} is used, and the
600date object must be specified.
601
602When the destination is a string the {{DATE-FORMAT-STRING}} value must be a
603date object, the {{DESTINATION}} value is used as the {{DATE-FORMAT-STRING}},
604and the result is returned as a string.
605
606When the destination is a port it must be an {{output-port}}, and the date
607object must be specified. When the destination is a number the
608{{(current-error-port)}} is the destination, and the {{DATE}} object must be
609specified.
610
611When the destination is {{#f}} the result is returned as a string, and the
612{{DATE}} object must be specified.
613
614===== scan-date
615
616<procedure>(scan-date SOURCE TEMPLATE-STRING)</procedure>
617
618Reads a text form of a date from the {{SOURCE}}, following the
619{{TEMPLATE-STRING}}, and returns a date object.
620
621When the source is {{#t}} the {{(current-input-port)}} is used.
622
623When the source is a port it must be an {{input-port}}.
624
625When the source is string it should be a date text form.
626
627
628== Usage
629
630This loads all modules.
631
632<enscript language=scheme>
633(require-extension srfi-19
634</enscript>
635
636
637== Examples
638
639
640== Notes
641
642* 31 December 1 BCE + 1 day => 1 January 1 CE. There is no year 0. Unlike the
643ISO 8601 convention do not subtract 1 when converting a year BCE to a SRFI-19
644year, just negate the year.
645
646* The SRFI-18 {{current-time}} and {{time?}} bindings conflict with SRFI-19
647bindings.
648
649* The SRFI-18 time object is not accepted except by the conversion procedures.
650
651* The expression {{(time=? (seconds->time/type (nanoseconds->seconds
652(time->nanoseconds <time-duration>))) <time-duration>)}} might be {{#f}}, due
653to the use of inexact arithmetic.
654
655* Be careful using the procedures that return some form of 'julian-day'. These
656are implemented using the full numeric tower and  '''will''' return rational
657numbers. Performing arithmetic with such a result will require the "numbers"
658egg. See the file "srfi-19-test.scm" in this egg for an example.
659
660* This will be a problem with code that assumes fixnum and/or flonum '''only'''
661numbers. Perhaps an intermediate file that wraps any 'julian-day' calls and
662coerces to an inexact number. Use the wrapped 'julian-day' call in the
663problematic code.
664
665
666== Requirements
667
668[[locale]]
669[[srfi-29]]
670[[miscmacros]]
671[[numbers]]
672
673== Bugs and Limitations
674
675* Local timezone information is not necessarily valid for historic dates and
676problematic for future dates. Daylight saving time is especially an issue.
677Conversion of a time or seconds value to a local date will use the current
678timezone offset value. The current offset will reflect the daylight saving time
679status. So target dates outside of the DST period will be converted
680incorrectly!
681
682* Will not read years less than 1 properly. The ISO 8601 year convention for
683years 1 BCE and before and years 10000 CE and after is not supported.
684
685
686== Author
687
688[[kon lovett]]
689
690
691== Version history
692
693; 2.9.1 : Shared error routines. Added 'time-period-compare'.
694; 2.9.0 : Inlining of "leap-second-delta" algorithm. Needs release 0.5.0 of "locale".
695; 2.8.1 : Updated 'tai-utc.dat'.
696; 2.8.0 : Timezone locale creation removed. Removed 'make-local-timezone-locale'. Deprecated 'make-timezone-locale' & 'timezone-locale?'.
697; 2.7.1 : Fix for 'add/subtract-duration[!].
698; 2.7.0 : Replaced date comparison w/ a field by field algorithm. Removed local-timezone-info, local-timezone-name, local-timezone-offset, and local-timezone-dst?.
699; 2.6.11 : Printing of "xxx.0" => xxx. More use of fixnum ops in srfi-19-io.
700; 2.6.10 : Dropped :optional.
701; 2.6.9 : Needs Chicken 2.610 for MacOS X & Windows.
702; 2.6.8 : Bug fix for make-date supplied dst flag. Added Bugs section.
703; 2.6.7 : Uses fixnum arithmetic where possible. Added time->julian-day, time->modified-julian-day, date comparisons. Bug fix for multiply-duration, divide-duration, & make-duration. Changed read-leap-second-table to required filename parameter.
704; 2.6.6 : Bug fix for time<=? & time>=?. Added time-period-preceding & time-period-succeeding. Split periods into srfi-19-period.
705; 2.6.5 : Bug fix for platforms not MacOS X, timezone offset was sign reversed.
706; 2.6.4 : Bug fix to time ctors/setters - allowed negative nanoseconds. Added make-local-timezone-locale w/ special case for platforms not Windows or Macintosh. Made local-timezone-locale a parameter.
707; 2.6.3 : Made time-max & time-min n-ary. Added make-null-time-period, time-negative?, time-positive?, time-zero?. Bug fix for local-timezone-offset [reported by Hans Bulfone]
708; 2.6.2 : Bug fix for local-timezone-locale, seconds->date/type, current-nanoseconds, & current-date [reported by Hans Bulfone]
709; 2.6.1 : Deprecated local-timezone-info, local-timezone-name, local-timezone-offset, and local-timezone-dst?. Bug fix for milliseconds->time. Bug fix for current-date when no tz-locale. [reported by Graham Fawcett]
710; 2.6 : Added time-period, date arithmetic, duration routines, fix for possible seconds limit in time object
711; 2.5 : Added Dutch locale, ISO-8601 conversion bug fix, 'date-year-day' bug fix [thanks to Arno Peters]
712; 2.4 : Removed annoying warnings, made srfi-19 an umbrella - uses -core & -io
713; 2.3 : Date dst? field, timezone-locale structure accessors
714; 2.2 : Bug fix for no local timezone setting situation [reported by Mario Domenech Goulart]
715; 2.1 : Bug fix for ->fixnum [reported by Mario Domenech Goulart]
716; 2.0 : Removed I/O routines to own extension
717; 1.9 : Fix, in conjunction w/ srfi-29, for locale details
718; 1.8 : Version removed
719; 1.7 : Brazilian Portuguese [thanks to Mario Domenech Goulart]
720; 1.6 : Bug fix for inexact seconds in time->date [thanks to Peter Bex]
721; 1.5 : Bug fix for compiled use
722; 1.4 : Exports
723; 1.3 : Bug fix
724; 1.2 : Slightly smaller and faster
725; 1.1 : Some SRFI-18 conflict reduction
726; 1.0 : Initial release
727
728
729== License
730
731Copyright (C) 2009 Kon Lovett.  All rights reserved.
732
733Permission is hereby granted, free of charge, to any person obtaining a
734copy of this software and associated documentation files (the Software),
735to deal in the Software without restriction, including without limitation
736the rights to use, copy, modify, merge, publish, distribute, sublicense,
737and/or sell copies of the Software, and to permit persons to whom the
738Software is furnished to do so, subject to the following conditions:
739
740The above copyright notice and this permission notice shall be included
741in all copies or substantial portions of the Software.
742
743THE SOFTWARE IS PROVIDED ASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
744IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
745FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
746THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
747OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
748ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
749OTHER DEALINGS IN THE SOFTWARE.
750
751Copyright (C) I/NET, Inc. (2000, 2002, 2003). All Rights Reserved.
752Copyright (C) Neodesic Corporation (2000). All Rights Reserved.
753
754This document and translations of it may be copied and furnished to others,
755and derivative works that comment on or otherwise explain it or assist in its
756implementation may be prepared, copied, published and distributed, in whole or
757in part, without restriction of any kind, provided that the above copyright
758notice and this paragraph are included on all such copies and derivative works.
759However, this document itself may not be modified in any way, such as by
760removing the copyright notice or references to the Scheme Request For
761Implementation process or editors, except as needed for the purpose of
762developing SRFIs in which case the procedures for copyrights defined in the SRFI
763process must be followed, or as required to translate it into languages other
764than English.
765
766The limited permissions granted above are perpetual and will not be revoked
767by the authors or their successors or assigns.
768
769This document and the information contained herein is provided on an AS IS
770basis and THE AUTHOR AND THE SRFI EDITORS DISCLAIM ALL WARRANTIES, EXPRESS OR
771IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
772INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
773MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Note: See TracBrowser for help on using the repository browser.