Ystok-Local-Time is a Common Lisp library for representing and handling time zones, dates, and timestamps. This package partially supports ISO 8601 format and provides localized read and print of date and time.
The idea was originally based on the LOCAL-TIME concept proposed by Erik Naggum (1965-2009) in "The Long, Painful History of Time" in 1999.
The implementation was also inspired by the Local-Time package by onShore, Inc. (http://alpha.onshore-devel.com/lisp-software/, seems not available any longer). But Erik had criticized their open source implementation heavily. For example, bignum-based operations were defeating the original efficiency purpose of the LOCAL-TIME.
Taking the critique into account and after realizing drawbacks, the fundamentals were redesigned in Ystok-Local-Time and code was rewritten considerably.
Date/time is represented by one of the following three structures:
date
corresponds to the DATE data type in SQL (ISO/IEC 9075:1999,2003).local-time
corresponds to TIMESTAMP WITHOUT TIME ZONE.utc-time
corresponds to SQL TIMESTAMP WITH TIME ZONE and contains an
explicit timezone offset.Ystok-Local-Time requires Ystok-Library.
The library was developed and tested on the following implementations:
We have not tried to run the code on any *nix himself, though unix-specific code from onShore is preserved "as is", see the unix.lisp source file.
Ystok-Local-Time is available from
http://lisp.ystok.ru/ylocal-time/ylocal-time-1-3-014.zip or
http://lisp.ystok.ru/ylocal-time/ylocal-time-1-3-014.tgz.
The distribution package contains both the ASDlite/ASDF-based ycard.asd and the LispWorks-based defsys.lisp system definition files.
Be sure to customize your timezone identifier in timezone.lisp under this
comment line:
;; ==================== PUT IN YOUR TIME ZONE HERE ====================
Here is change.log.
For documentation, take look a look at the original Erik Naggum's article http://naggum.no/lugm-time.html or its local copy lugm-time.html