Chronos is one of the many Smalltalk-related blogs syndicated on Planet Smalltalk
χρόνος

Discussion of the Essence# programming language, and related issues and technologies.

Blog Timezone: America/Los_Angeles [Winter: -0800 hhmm | Summer: -0700 hhmm] 
Your local time:  
Showing posts with label numerology. Show all posts
Showing posts with label numerology. Show all posts

2007-01-02

US Holidays 2007

Here are the "holidays" that will be observed in the United States during 2007. The list was generated by the Chronos Date/Time Library.

Most of the listed "holidays" will actually be business days, although some will not. The US Federal Holidays (on which most US Government offices will close, along with all Federally-chartered banks) are highlighted in bold. Generally, each business decides on its own which of these days (if any) will be non-business days (and for which employees):

Mon, 01 Jan 2007: NewYearsDay
Tue, 02 Jan 2007: DayOfMourning-GeraldFord
Mon, 08 Jan 2007: JacksonDay
Mon, 15 Jan 2007: MartinLutherKingDay
Fri, 02 Feb 2007: GroundhogDay
Mon, 12 Feb 2007: LincolnsBirthday
Wed, 14 Feb 2007: ValentinesDay
Mon, 19 Feb 2007: WashingtonsBirthday
Sat, 17 Mar 2007: StPatricksDay
Sun, 01 Apr 2007: AprilFoolsDay
Fri, 06 Apr 2007: GoodFriday
Sun, 08 Apr 2007: Easter
Sun, 22 Apr 2007: EarthDay
Wed, 25 Apr 2007: AdministrativeAssistantsDay
Fri, 27 Apr 2007: ArborDay
Sun, 13 May 2007: MothersDay
Mon, 28 May 2007: MemorialDay
Thu, 14 Jun 2007: FlagDay
Sun, 17 Jun 2007: FathersDay
Wed, 04 Jul 2007: IndependenceDay
Sun, 22 Jul 2007: ParentsDay
Mon, 03 Sep 2007: LaborDay
Sun, 09 Sep 2007: GrandParentsDay
Mon, 08 Oct 2007: ColumbusDay
Wed, 24 Oct 2007: UnitedNationsDay
Wed, 31 Oct 2007: Halloween
Mon, 12 Nov 2007: VeteransDay (observed)
Thu, 22 Nov 2007: Thanksgiving
Fri, 23 Nov 2007: DayAfterThanksgiving
Mon, 24 Dec 2007: ChristmasEve
Tue, 25 Dec 2007: Christmas
Mon, 31 Dec 2007: NewYearsEve


2006-12-24

Merry Christmas

(At the time of this post, it's already Christmas in the Far East)

2006-12-25 AD [Gregorian]
0163-15-14 BE [Bahai]
1723-04-16 AM [Coptic]
1999-04-16 ZH [Ethiopic]
5767-10-04 AM [Hebrew]
1928-10-04 AS [Indian Civil]
1427-12-04 AH [Islamic (Fatimid)]
2006-12-12 AD [Julian]
2759-12-12 AUC [Julian (Imperial)]
1385-10-04 AP [Persian]
6243-01-04 SY [Solarian]
2006-359 [Gregorian-ordinal date]
2006-W52-1 [ISO]
J.D. 2454095 [Julian Day]
Christmas

Mon, 25 Dec 2006 13:00:00 +1300 (NZDT: Pacific/Auckland | New Zealand Time)
Mon, 25 Dec 2006 11:00:00 +1100 (EST: Australia/Sydney | AUS Eastern Time)
Mon, 25 Dec 2006 09:00:00 +0900 (JST: Asia/Tokyo | Tokyo Time)
Mon, 25 Dec 2006 09:00:00 +0900 (WST: Australia/Perth | W. Australia Time)
Mon, 25 Dec 2006 08:00:00 +0800 (HKT: Asia/Hong_Kong)
Mon, 25 Dec 2006 05:30:00 +0530 (IST: Asia/Calcutta | India Time)
Mon, 25 Dec 2006 03:00:00 +0300 (MSK: Europe/Moscow | Russian Time)
Mon, 25 Dec 2006 02:00:00 +0200 (IST: Asia/Jerusalem | Israel Time)
Mon, 25 Dec 2006 01:00:00 +0100 (CET: Europe/Amsterdam)
Mon, 25 Dec 2006 00:00:00 +0000 (GMT: Europe/London | London Time)
Mon, 25 Dec 2006 00:00:00 +0000 (UT: Universal Time)
Sun, 24 Dec 2006 22:00:00 -0200 (BRST: America/Sao_Paulo | E. South America Time)
Sun, 24 Dec 2006 21:00:00 -0300 (ART: America/Argentina/Buenos_Aires)
Sun, 24 Dec 2006 19:00:00 -0500 (EST: America/New_York | Eastern Time)
Sun, 24 Dec 2006 18:00:00 -0600 (CST: America/Chicago | Central Time)
Sun, 24 Dec 2006 17:00:00 -0700 (MST: America/Denver | Mountain Time)
Sun, 24 Dec 2006 16:00:00 -0800 (PST: America/Los_Angeles | Pacific Time)
Sun, 24 Dec 2006 14:00:00 -1000 (HST: Pacific/Honolulu | Hawaiian Time)


2006-09-18

Julian Day 2,454,000

At noon of 21 September 2006 begins Julian Day Number 2,454,000. A day and a half later, the Autumnal Equinox will occur (2006-09-23T04:03 Universal Time.)

The Hebrew New Year starts at sundown on 22 September (a.k.a Rosh Hoshana.) Note that the first month of the Hebrew year is traditionally known as the seventh month, not the first month.

Julian Day Numbers are an integer count of days since a specific epoch date. Julian Day Zero begins at Noon on 14 November 4714 BC, according to the proleptic Gregorian Calendar--or at Noon on 1 January 4713 BC, according to the proleptic Julian Calendar. Julian Day Zero was a Monday.

A Julian Date is a count of days, including any fractional part of the day, since -4713-11-24T12:00:00+0000 (24 Nov -4713 12:00:00 Universal Time, using Astronomical year numbering, where the year prior to the year 0001 is the year 0000, and not the year 1 BC, as would be traditional.)

It is common, but nevertheless technically incorrect, to refer to an ordinal date (Year-DayOfYear) as a "Julian Date."

Using a Julian Day Number to specify a date, or a Julian Date to specify a precise point in time, is useful for two reasons:

1) It permits dates to specified without reference to any particular calendrical system; and

2) It vastly simplifies astronomical calculations, and other computations where the amount of time between two dates needs to be computed.

The Julian Day system of specifying dates was invented by the astronomer Joseph Scaliger in 1583 (the year after the Gregorian Calendar Reform was put into effect in the Catholic countries of Europe.)

The epoch day of the Julian Day system was chosen to be the most recent day on which three calendrical cycles all were at their respective zero points. The three cycles are the 15-year Indiction Cycle (important in Roman tax law,) the 19-year Metonic Cycle (important for obtaining approximate synchronization of lunar and solar calendars,) and the 28-year Solar Cycle (all possible patterns of Julian Calendar dates and days-of-the-week recur once every 28 years.)

The "Julian" in "Julian Day" refers to Scaliger's father, and not to either Julius Caesar or to the Julian Calendar.

Julian Day 2,454,000 corresponds to the following dates in selected calendars (as computed by the Chronos Date/Time Library):

2006-09-21 AD [Gregorian]
0163-10-14 BE [Bahai]
1723-01-11 AM [Coptic]
1999-01-11 ZH [Ethiopic]
5766-06-28 AM [Hebrew]
1928-06-30 AS [Indian Civil]
1427-08-27 AH [Islamic (Fatimid)]
2006-09-08 AD [Julian]
2759-09-08 AUC [Julian (Imperial)]
1385-06-30 AP [Persian]
6242-09-30 SY [Solarian]
2006-264 [Gregorian-ordinal date]
2006-W38-4 [ISO]
J.D. 2454000 [Julian Day]
732574 days since Gregorian Epoch (1 January 0001 AD)
38614:00:00:00 days:hh:mm:ss.s.. since 1901-01-01T00:00:00Z (ST80 epoch)
1158796800 seconds since 1970-01-01T00:00:00Z (Unix epoch)
128032704000000000 100-nanosecond ticks since 1601-01-01T00:00:00Z (MS WIndows epoch)


2006-08-20

128000000000000000

Microsoft NT counts time as the number of 100-nanosecond ticks since 1601-01-01T00:00:00Z (1 January 1601 00:00:00 Universal Time.) I just happened to notice that the NT clock struck 128000000000000000 a few days ago, specifically at 2006-08-14T03:33:20+00:00 (14 August 2006 03:33:20 Universal Time.)

You can easily compute that using the following Chronos code:


ChronosFunction
daysAndSecondsSinceStartOfDayFromSeconds: 128000000000000000 // 10000000
into: [:days :seconds |
Timepoint
daysSinceEpoch: days + (YearMonthDay year: 1601 day: 1) daysSinceEpoch
seconds: seconds
timeZone: #UT]


If you'd prefer to have the result computed relative to your local time zone, use the following variation:


ChronosFunction
daysAndSecondsSinceStartOfDayFromSeconds: 128000000000000000 // 10000000
into: [:days :seconds |
Timepoint
utDaysSinceEpoch: days + (YearMonthDay year: 1601 day: 1) daysSinceEpoch
seconds: seconds]


2006-05-02

"666" sense: Date marked with caution

From the Denver Post:

"While some say June 6, 2006, is a day to fear for its biblical significance, officials see little to dread."

Link to full article.


2006-04-04

Numerology

Tomorrow morning, there will come a moment whose local time (in North American notation) will have the designation 04/05/06 07:08:09 (April 5, 2006.)

Next month (using YY-MM-DD notation,) the date-time designation 06-05-04 03:02:01 will occur (2006-May-04.)

In June, we'll have 06/06/06 06:06:06.

Later this year, at Noon of 21 September 2006, will occur Julian Day 2454000--which is one or two days before the Autumnal Equinox (depending on your time zone.)


2005-12-31

Watch the leap second as it happens

Leapsecond.com has a Leap Second Countdown Clock where you can watch the leap second happen.


Happy New Year

As I write, it's New Year's Day in Asia:

Sun, 1 Jan 2006 09:54:46 +1300 (NZDT: Pacific/Auckland)
Sun, 1 Jan 2006 07:54:46 +1100 (EST: Australia/Sydney)
Sun, 1 Jan 2006 05:54:46 +0900 (JST: Asia/Tokyo)
Sun, 1 Jan 2006 04:54:46 +0800 (WST: Australia/Perth)
Sun, 1 Jan 2006 04:54:46 +0800 (HKT: Asia/Hong_Kong)
Sun, 1 Jan 2006 02:24:46 +0530 (IST: Asia/Calcutta)
Sat, 31 Dec 2005 23:54:46 +0300 (MSK: Europe/Moscow)
Sat, 31 Dec 2005 22:54:46 +0200 (IST: Asia/Jerusalem)
Sat, 31 Dec 2005 21:54:46 +0100 (CET: Europe/Amsterdam)
Sat, 31 Dec 2005 20:54:46 +0000 (GMT: Europe/London)
Sat, 31 Dec 2005 20:54:46 +0000 (UT: Universal Time)
Sat, 31 Dec 2005 18:54:46 -0200 (BRST: America/Sao_Paulo)
Sat, 31 Dec 2005 17:54:46 -0300 (ART: America/Argentina/Buenos_Aires)
Sat, 31 Dec 2005 15:54:46 -0500 (EST: America/New_York)
Sat, 31 Dec 2005 14:54:46 -0600 (CST: America/Chicago)
Sat, 31 Dec 2005 13:54:46 -0700 (MST: America/Denver)
Sat, 31 Dec 2005 12:54:46 -0800 (PST: America/Los_Angeles)
Sat, 31 Dec 2005 10:54:46 -1000 (HST: Pacific/Honolulu)

Of course, it's only New Year's Day according to the Gregorian Calendar (the official global calendar of business, and the basis of legal time in most countries.) But there are other calendars:

2006-01-01 AD [Gregorian]
0162-16-02 BE [Bahai]
1722-04-23 AM [Coptic]
1998-04-23 ZH [Ethiopic]
5766-10-01 AM [Hebrew]
1927-10-11 AS [Indian Civil]
1426-12-01 AH [Islamic (Fatimid)]
2005-12-19 AD [Julian]
2758-12-19 AUC [Julian (Imperial)]
1384-10-11 AP [Persian]
6242-01-12 SY [Solarian]
2006-001 [Gregorian-ordinal date]
2005-W53-7 [ISO]
J.D. 2453737 [Julian Day]
NewYearsDay weekend (Sunday)


2005-12-30

The Leap Second of 2005

The second following 2005-12-31T23:59:59+0000 will be a leap second, and will have the ISO 8601 designation 2005-12-31T23:59:60+0000. In the Universal Time Zone (the one whose offset from the UTC timescale is zero seconds,) the final two seconds of 2005, and the first two seconds of 2006, will be designated as follows:

                                              Seconds since 1970-01-01T00:00:00

Universal Time                  Unix/POSIX Clock     UTC Timescale

2005-12-31T23:59:59            1,136,073,599           1,136,073,621

2005-12-31T23:59:60            1,136,073,599          1,136,073,622

2006-01-01T00:00:00         1,136,073,600          1,136,073,623

2006-01-01T00:00:01          1,136,073,601           1,136,073,624

Firstly, note that leap seconds always occur as the final second of the day in the Universal Time Zone, and therefore occur at some other time of day in any time zone whose offset from UT is not zero. The effect of a leap second is to make the minute that contains it 61 seconds long, the hour that contains it 3601 seconds long, the day that contains it 86401 seconds long, and the year that contains it 31,536,001 seconds long (31,622,401 seconds in a leap year)--all assuming there is only one leap second during those periods, and assuming a positive leap second. Leap seconds can theoretically be negative, although none such have yet to occur.

Where I live in California, the leap second of 2005 will occur as the final second of the final minute before 4pm on Saturday, 31 December 2005 (2005-12-31T15:59:60-8000.)

Secondly, note that the Unix/POSIX system clock does not agree with the count of seconds according to the UTC timescale. The same is true of the Windows and MacOS X system clocks, the VisualWorks system clock, and of the count of seconds returned by an RFC 868 time service (which answers the count of seconds since 1900-01-01T00:00:00+0000.) They all provide answers as though leap seconds didn't exist--although some of them will repeat T59:59:59 twice, so that leap-second-naive algorithms that convert a count of seconds into a year-month-day-hour-minute-second designation will compute the right result.

The reason most system clocks report time (in seconds since an epoch) as though there were always 86400 seconds per day is because most date/time libraries make that assumption. One reason most date/time libraries make that assumption (in addition to the complexity of the code required to handle leap seconds correctly) is because most system clocks report time that way. Specifically, the clock code in the OS kernel converts the date provided by the motherboard's real time clock into a count of seconds based on a naive 86400 seconds/day algorithm, and does not add in a leap second correction. It's a vicious circle.

Of course, most users wouldn't know the difference, and wouldn't care if they did know it. Which is another reason the leap second "catch 22" situation persists to this day, more than 30 years after leap seconds were added to the UTC timescale. Another reason that the situation persists is because most clocks don't keep time to anywhere near one second per year accuracy--and a clock has to be more accurate than even that before leap seconds matter.

Nevertheless, clocks with sufficient accuracy for leap seconds to matter do exist, and will become rather common by the end of the next decade. And there are users and use cases where such accuracy not only matters, but is essential. It is for these reasons that I am working on adding full support for leap seconds into Chronos.

I would like to point out, however, that leap seconds are usually irrelevant in Chronos. The class that implements the "point in time" concept, called Timepoint, does not represent a point-in-time as a count of seconds since an epoch. Instead, it represents a point-in-time as a) a count of days since an epoch and/or a year/day-of-year designation (the same instance may do both,) b) a number of seconds since the start of the day, and c) the number of nanoseconds since the start of the second. The counts of the days, the seconds and the nanoseconds since the epoch are all relative to Universal Time. The year/day-of-year designation is relative to the local time of the Timepoint instance. This internal representation scheme is one reason why Chronos is so performant relative to its competition.

So, given Timepoint's internal representation, leap seconds would only be relevant to the semantics of the internal representation of a Timepoint when it designates a point-in-time that corresponds to the occurrence of a leap second, and not otherwise. Leap seconds also would matter whenever one converts a Timepoint into a count of seconds since an epoch, or converts a count of seconds since an epoch into a Timepoint--but even then, the provider or consumer of the seconds-since-the-epoch count would have to be leap-second aware, which is not usually the case.