UNPKG

ilib

Version:

iLib is a cross-engine library of internationalization (i18n) classes written in pure JS

1 lines 1.98 kB
var MathUtils=require("./MathUtils.js"),JSUtils=require("./JSUtils.js"),JulianDay=require("./JulianDay.js"),RataDie=function(params){if(params)if(void 0!==params.date){var date=params.date;JSUtils.isDate(date)||(date=new Date(date)),this._setTime(date.getTime())}else void 0!==params.unixtime?this._setTime(parseInt(params.unixtime,10)):void 0!==params.julianday?this._setJulianDay(parseFloat(params.julianday)):params.year||params.month||params.day||params.hour||params.minute||params.second||params.millisecond||params.parts||params.cycle?this._setDateComponents(params):void 0!==params.rd&&(this.rd="object"==typeof params.rd&&params.rd instanceof RataDie?params.rd.rd:params.rd);if(void 0===this.rd||isNaN(this.rd)){var now=new Date();this._setTime(now.getTime())}};RataDie.gregorianEpoch=1721424.5,RataDie.prototype={epoch:RataDie.gregorianEpoch,_setTime:function(millis){this._setJulianDay(2440587.5+millis/864e5)},_setJulianDay:function(date){var jd="number"==typeof date?new JulianDay(date):date;this.rd=MathUtils.halfup(864e5*(jd.getDate()-this.epoch))/864e5},_onOrBefore:function(rd,dayOfWeek){return rd-MathUtils.mod(Math.floor(rd)-dayOfWeek-2,7)},onOrBefore:function(dayOfWeek,offset){return offset=offset||0,this._onOrBefore(this.rd+offset,dayOfWeek)-offset},onOrAfter:function(dayOfWeek,offset){return offset=offset||0,this._onOrBefore(this.rd+6+offset,dayOfWeek)-offset},before:function(dayOfWeek,offset){return offset=offset||0,this._onOrBefore(this.rd-1+offset,dayOfWeek)-offset},after:function(dayOfWeek,offset){return offset=offset||0,this._onOrBefore(this.rd+7+offset,dayOfWeek)-offset},getTime:function(){var jd=this.getJulianDay();return jd<2440587.5||2465442.634803241<jd?-1:Math.round(864e5*(jd-2440587.5))},getTimeExtended:function(){var jd=this.getJulianDay();return jd<-97559412.5||102440587.5<jd?NaN:Math.round(864e5*(jd-2440587.5))},getJulianDay:function(){return this.rd+this.epoch},getRataDie:function(){return this.rd}},module.exports=RataDie;