Jump To …

date.coffee

date type.

date from number,date,string

validator = require "./validator"
type = require "./type"
message = require "./message"

class type._date extends type.Base
	@alias: Date
	@check: (obj) -> validator.isDate obj
	@from: (obj) ->
		return obj if obj instanceof Date
			
		if 'string' == typeof obj

number

			if "" + parseInt(obj, 10) == obj
				return new Date parseInt(obj, 10) * Math.pow(10, 13 - obj.length)
			if obj.length == 14
				return new Date obj.obj.replace(/^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/, "$1-$2-$3 $4:$5:$6")

TODO: test rfc3339 for browser IE...

			time = Date.parse obj
			return if time then new Date time else obj

		if 'number' == typeof obj
			return new Date obj * Math.pow(10, 13 - ("" + obj).length)
		
		return obj

type.register 'date', type._date