mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-26 13:59:23 +00:00
132 lines
2.6 KiB
JavaScript
132 lines
2.6 KiB
JavaScript
/**
|
|
* The date library
|
|
*
|
|
* @author Pierre HUBERT
|
|
*/
|
|
|
|
const ComunicDate = {
|
|
/**
|
|
* Get current timestamp
|
|
*
|
|
* @return {Integer} The current timestamp
|
|
*/
|
|
time: function(){
|
|
return Math.floor(new Date().getTime()/1000);
|
|
},
|
|
|
|
/**
|
|
* Convert a difference in second into a date
|
|
*
|
|
* @param {Integer} difference The difference between two values
|
|
* @return {String} The generated date
|
|
*/
|
|
diffToStr: function(difference){
|
|
|
|
//Check if difference is less than one second
|
|
if(difference < 0)
|
|
difference = 0;
|
|
|
|
//Calculate seconds
|
|
var seconds = difference-Math.floor(difference/60)*60;
|
|
var difference = (difference - seconds)/60;
|
|
|
|
//Check there was less than one minute
|
|
if(difference == 0)
|
|
return lang("dates_s", [seconds]);
|
|
|
|
|
|
//Calculate minutes
|
|
var minutes = difference-Math.floor(difference/60)*60;
|
|
var difference = (difference - minutes)/60;
|
|
|
|
//Check there was less than one hour
|
|
if(difference == 0)
|
|
return lang("dates_min", [minutes]);
|
|
|
|
|
|
//Calculate hours
|
|
var hours = difference-Math.floor(difference/24)*24;
|
|
var difference = (difference - hours)/24;
|
|
|
|
//Check there was less than a day
|
|
if(difference == 0)
|
|
return lang("dates_h", [hours]);
|
|
|
|
|
|
//Calculate days
|
|
var days = difference-Math.floor(difference/30)*30;
|
|
var difference = (difference - days)/30;
|
|
|
|
//Check there was less than a month
|
|
if(difference == 0){
|
|
if(days == 1)
|
|
return lang("dates_one_day");
|
|
else
|
|
return lang("dates_days", [days]);
|
|
}
|
|
|
|
|
|
//Calculate months
|
|
var months = difference-Math.floor(difference/12)*12;
|
|
var difference = (difference - months)/12;
|
|
|
|
//Check there was less than a year
|
|
if(difference == 0){
|
|
if(months == 1)
|
|
return lang("dates_one_month");
|
|
else
|
|
return lang("dates_months", [months]);
|
|
}
|
|
|
|
|
|
//Calculate years
|
|
var years = difference;
|
|
if(years == 1){
|
|
return lang("dates_one_year");
|
|
}
|
|
else {
|
|
return lang("dates_years", [years]);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Get the difference of time from now to a specified
|
|
* timestamp and return it as a string
|
|
*
|
|
* @param {Integer} time The base time
|
|
* @return {String} Computed difference
|
|
*/
|
|
timeDiffToStr: function(time){
|
|
return this.diffToStr(this.time() - time);
|
|
},
|
|
}
|
|
|
|
ComunicWeb.common.date = ComunicDate;
|
|
|
|
/**
|
|
* Add a day to a date
|
|
*
|
|
* @param {Date} date Target date
|
|
*/
|
|
function addOneDay(date) {
|
|
return new Date(date.getTime() + 1000*60*60*24);
|
|
}
|
|
|
|
/**
|
|
* Get all the days of a specified range
|
|
*
|
|
* @param {Date} start
|
|
* @param {Date} end (exclusive)
|
|
*/
|
|
function getDaysOfRange(start, end) {
|
|
let curr = start;
|
|
let list = [];
|
|
|
|
while (curr < end) {
|
|
list.push(curr);
|
|
curr = addOneDay(curr);
|
|
}
|
|
|
|
return list;
|
|
}
|