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:
datecorresponds to the DATE data type in SQL (ISO/IEC 9075:1999,2003).
local-timecorresponds to TIMESTAMP WITHOUT TIME ZONE.
utc-timecorresponds 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 LispWorks 4.2-4.4, 5.0 for Windows.
The author has not tried to run the code on any *nix himself, though unix-specific code from onShore is preserved "as is", see unix.lisp.
Ystok-Local-Time is available from http://lisp.ystok.ru/ylocal-time/ylocal-time-1-2-013.zip. The distribution package contains both the ASDF file ystok-local-time.asd and the LispWorks system definition file defsys.lisp.
Be sure to customize your timezone identifier in timezone.lisp under this
;; ==================== PUT IN YOUR TIME ZONE HERE ====================
Here is change.log.
For documentation, take look a look at original Erik Naggum's article http://naggum.no/lugm-time.html or its local copy lugm-time.html