UNPKG

walltime-js

Version:

A javascript library for easily translating a UTC time to a "Wall Time" for a particular time zone and back.

190 lines (140 loc) 6.59 kB
should = require "should" helpers = require "../lib/olson/helpers" describe "Olson Helpers", -> describe "Time Helpers", -> # These are tests to confirm my assumptions about javascript dates commonDateCompare = (y, m, d, h, mi, s, ms) -> dt = helpers.Time.MakeDateFromParts y, m, d, h, mi, s, ms dt.getUTCFullYear().should.equal y, "year" dt.getUTCMonth().should.equal m, "month" dt.getUTCDate().should.equal d, "day" dt.getUTCHours().should.equal h, "hour" dt.getUTCMinutes().should.equal mi, "minute" dt.getUTCSeconds().should.equal s, "second" dt.getUTCMilliseconds().should.equal ms, "millisecond" it "can MakeDateFromParts correctly for 2012 before Daylight Savings using default constructor", -> commonDateCompare 2012, 3-1, 11, 1, 59, 59, 999 it "can MakeDateFromParts correctly for 2012 after Daylight Savings using default constructor", -> # Note the change over to 3:00 for this time zone commonDateCompare 2012, 3-1, 11, 2, 0, 0, 0 it "can parse times", -> [hours, mins, qual] = helpers.Time.ParseTime "23:00" hours.should.equal 23 mins.should.equal 0 qual.should.equal '' [hours, mins, qual] = helpers.Time.ParseTime "23:00u" hours.should.equal 23 mins.should.equal 0 qual.should.equal "u" it "can parse GMT offsets", -> [negative, hour, minute, seconds] = helpers.Time.ParseGMTOffset "-5:50:36" negative.should.equal true, "negative" hour.should.equal 5, "hour" minute.should.equal 50, "minute" seconds.should.equal 36, "seconds" [negative, hour, minute, seconds] = helpers.Time.ParseGMTOffset "5:00" negative.should.equal false, "negative2" hour.should.equal 5, "hour2" minute.should.equal 0, "minute2" (isNaN seconds).should.equal true, "seconds2" it "can apply an offset", -> # Start with 1/10/1920 12:00 UTC origDate = helpers.Time.MakeDateFromParts(1920, 0, 10, 12) offset = negative: true hours: 5 mins: 50 secs: 36 # Apply our offset of -5:50:36 utcDate = helpers.Time.ApplyOffset origDate, offset # Should be 1/10/1920 5:50:36 UTC utcDate.should.equal helpers.Time.MakeDateFromParts(1920, 0, 10, 17, 50, 36) offset.negative = false offset.mins = 0 offset.secs = 0 # Apply an offset of + 5 hours utcDate = helpers.Time.ApplyOffset origDate, offset # Should be 1/10/1920 7:00 UTC utcDate.should.equal helpers.Time.MakeDateFromParts(1920, 0, 10, 7) it "can apply a SAVE value", -> # Start with 1/10/1920 12:00 origDate = helpers.Time.MakeDateFromParts(1920, 0, 10, 12) expectDate = helpers.Time.MakeDateFromParts(1920, 0, 10, 13) save = hours: 1 mins: 0 result = helpers.Time.ApplySave origDate, save result.should.equal expectDate it "can generate a standard time", -> offset = negative: true hours: 6 mins: 0 secs: 0 utc = helpers.Time.MakeDateFromParts 1920, 0, 10, 12 expect = helpers.Time.ApplyOffset utc, offset, true result = helpers.Time.UTCToStandardTime utc, offset result.should.equal expect result.getUTCHours().should.equal 6 it "can generate a utc time from a standard time and offset", -> offset = negative: true hours: 6 mins: 0 secs: 0 # Standard time of 1/10/1920 12:00 PM with -6:00:00 offset result = helpers.Time.StandardTimeToUTC offset, 1920, 0, 10, 12 # Should be UTC time of 1/10/1920 18:00 PM expect = helpers.Time.MakeDateFromParts 1920, 0, 10, 18 result.should.equal expect result.getUTCHours().should.equal 18 it "can generate qualified time", -> getSave = -> hours: 1 mins: 0 offset = negative: true hours: 6 mins: 0 secs: 0 utc = helpers.Time.MakeDateFromParts 1920, 0, 10, 12 # UTC Time expect = utc result = helpers.Time.UTCToQualifiedTime utc, "u", offset, getSave result.should.equal expect, "UTC Time" result.getUTCHours().should.equal 12 # Standard Time expect = helpers.Time.ApplyOffset utc, offset, true result = helpers.Time.UTCToQualifiedTime utc, "s", offset, getSave result.should.equal expect, "Standard Time" result.getUTCHours().should.equal 6 # Wall Time expect = helpers.Time.ApplySave expect, getSave() result = helpers.Time.UTCToQualifiedTime utc, "w", offset, getSave result.should.equal expect, "Wall Time" result.getUTCHours().should.equal 7 it "can generate utc from qualified time", -> getSave = -> hours: 1 mins: 0 offset = negative: true hours: 6 mins: 0 secs: 0 utc = helpers.Time.MakeDateFromParts 1920, 0, 10, 12 # UTC Time expect = utc result = helpers.Time.QualifiedTimeToUTC utc, "u", offset, getSave result.should.equal expect, "UTC Time" result.getUTCHours().should.equal 12 # Standard Time expect = helpers.Time.StandardTimeToUTC offset, utc result = helpers.Time.QualifiedTimeToUTC utc, "s", offset, getSave # 12:00 with a -6:00 offset should be 18:00 in standard time result.getUTCHours().should.equal 18 # Wall Time expect = helpers.Time.WallTimeToUTC offset, getSave(), utc result = helpers.Time.QualifiedTimeToUTC utc, "w", offset, getSave # 12:00 with a -6:00 offset and 1:00 save should be -5:00 offset result.getUTCHours().should.equal 17