Files
js-scripts/components/component-time.js
2025-04-04 17:19:07 +08:00

66 lines
1.8 KiB
JavaScript

var getMillis = (date) => {
if (date == null) { return 0; }
if (date instanceof java.util.Date) {
return date.getTime();
}
return date;
};
var formatDuration = (date) => {
var millis = getMillis(date);
var diffMillis = $$.date().millis() - millis;
if (diffMillis < 3000) {
return 'just now';
}
var secs = $$.num(diffMillis).divr(1000, 0, null).along();
if (secs < 60) {
return secs + 's';
}
var mins = $$.num(secs).divr(60, 0, null).along();
if (mins < 60) {
return mins + 'm';
}
var hours = $$.num(mins).divr(60, 0, null).along();
if (hours < 24) {
return hours + 'h';
}
var days = $$.num(hours).divr(24, 0, null).along();
if (days < 31) {
return days + 'd';
}
return $$.date().fmt('yyyy-MM-dd').format(new java.util.Date(millis));
};
var formatDueInDays = (date) => {
var millis = getMillis(date);
var diffMillis = millis - $$.date().millis();
var isMinus = diffMillis < 0;
if (isMinus) {
diffMillis = -diffMillis;
}
var prefix = isMinus ? '-' : '';
var secs = $$.num(diffMillis).divr(1000, 0, null).along();
if (secs < 60) {
return 'in ' + prefix + secs + 's';
}
var mins = $$.num(secs).divr(60, 0, null).along();
if (mins < 60) {
return 'in ' + prefix + secs + 'm';
}
var hours = $$.num(mins).divr(60, 0, null).along();
if (hours < 24) {
return 'in ' + prefix + hours + 'h';
}
var days = $$.num(hours).divr(24, 0, null).along();
if (days < 31) {
return 'in ' + prefix + days + 'd';
}
return $$.date().fmt('yyyy-MM-dd').format(new java.util.Date(millis));
};
if (typeof exports == 'object') {
exports.getMillis = getMillis;
exports.formatDuration = formatDuration;
exports.formatDueInDays = formatDueInDays;
}