Jump To …

chronos_time.coffee

class TimeWrapper constructor: (milliseconds) -> @milliseconds = if milliseconds then milliseconds else Date.now() @dateObj = new Date(@milliseconds) toMilliseconds: -> @milliseconds

module.exports = TimeWrapper

TimeString = require './time_string'
TimeFormat = require './time_format'
ChronosDom = require './chronos_dom'

class ChronosTime
  constructor: (dateObj) -> @dateObj = dateObj
  toMilliseconds: -> @dateObj.getTime()
  getDateObject: -> @dateObj

Arithmetic

  plus: (input) ->
    new ChronosTime new Date(@toMilliseconds() + new TimeString(input).toMilliseconds())
  minus: (input) ->
    new ChronosTime new Date(@toMilliseconds() - new TimeString(input).toMilliseconds())

From the Date object

  year: -> parseInt(@dateObj.getFullYear())

In our parsing process we remove the zero-indexing that JavaScript natively applies to months

  month: -> parseInt(@dateObj.getMonth()) + 1
  day: -> parseInt(@dateObj.getDate())
  hour: -> parseInt(@dateObj.getHours())
  minute: -> parseInt(@dateObj.getMinutes())
  second: -> parseInt(@dateObj.getSeconds())
  millisecond: -> parseInt(@dateObj.getMilliseconds())
  toString: -> @dateObj.toString()

Format

  timeAgo: -> new TimeFormat(@toMilliseconds()).format()
  timeFromNow: -> @timeAgo() # no difference, just for developer convenience

  live: (domId, callback, interval = '5 seconds') ->
    ChronosDom.live(domId, callback, @, interval)

module.exports = ChronosTime