walltime-js
Version:
A javascript library for easily translating a UTC time to a "Wall Time" for a particular time zone and back.
113 lines (82 loc) • 3.34 kB
text/coffeescript
init = (helpers) ->
class TimeZoneTime
constructor: (, , ) ->
= .offset
= helpers.Time.UTCToWallTime , ,
# Standard Date overrides
getFullYear: -> .getUTCFullYear()
getMonth: -> .getUTCMonth()
getDate: -> .getUTCDate()
getDay: -> .getUTCDay()
getHours: -> .getUTCHours()
getMinutes: -> .getUTCMinutes()
getSeconds: -> .getUTCSeconds()
getMilliseconds: -> .getUTCMilliseconds()
# UTC Date overrides
getUTCFullYear: -> .getUTCFullYear()
getUTCMonth: -> .getUTCMonth()
getUTCDate: -> .getUTCDate()
getUTCDay: -> .getUTCDay()
getUTCHours: -> .getUTCHours()
getUTCMinutes: -> .getUTCMinutes()
getUTCSeconds: -> .getUTCSeconds()
getUTCMilliseconds: -> .getUTCMilliseconds()
getTime: -> .getTime()
getTimezoneOffset: ->
base = (.hours * 60) + .mins
dst = (.hours * 60) + .mins
unless .negative
base = -base
base - dst
toISOString: -> .toISOString()
toUTCString: -> .toUTCString()
toDateString: ->
utcStr = .toUTCString()
caps = utcStr.match "([a-zA-Z]*), ([0-9]+) ([a-zA-Z]*) ([0-9]+)"
[caps[1], caps[3], caps[2], caps[4]].join " "
toFormattedTime: (use24HourTime = false) ->
hour = origHour =
hour -= 12 if hour > 12 and !use24HourTime
hour = 12 if hour == 0
min =
min = "0" + min if min < 10
meridiem = if origHour > 11 then ' PM' else ' AM'
meridiem = '' if use24HourTime
"#{hour}:#{min}#{meridiem}"
setTime: (ms) ->
= helpers.Time.UTCToWallTime new Date(ms), .offset,
setFullYear: (y) ->
.setUTCFullYear y
setMonth: (m) ->
.setUTCMonth m
setDate: (utcDate) ->
.setUTCDate utcDate
setHours: (hours) ->
.setUTCHours hours
setMinutes: (m) ->
.setUTCMinutes m
setSeconds: (s) ->
.setUTCSeconds s
setMilliseconds: (ms) ->
.setUTCMilliseconds ms
# Updates to
_updateUTC: ->
= helpers.Time.WallTimeToUTC , , , , , , , ,
.getTime()
TimeZoneTime
if typeof window == 'undefined'
req_helpers = require "./helpers"
module.exports = init(req_helpers)
else if typeof define != 'undefined'
define ["olson/helpers"], init
else
@.WallTime or= {}
@.WallTime.TimeZoneTime = init(@.WallTime.helpers)