Relativnà formátovánà data
důležitost: 4
NapiÅ¡te funkci formátujDatum(datum), která by mÄla formátovat datum následovnÄ:
- Jestliže od okamžiku
datumuplynula ménÄ než 1 sekunda, pak"právÄ teÄ". - Jinak jestliže od
datumuplynula ménÄ než 1 minuta, pak"pÅed n s". - Jinak jestliže uplynula ménÄ než hodina, pak
"pÅed m min.". - Jinak úplné datum ve formátu
"DD.MM.RR HH:mm", tedy:"den.mÄsÃc.rok hodiny:minuty", vÅ¡e v 2-ÄÃslicovém formátu, napÅ.31.12.16 10:00.
PÅÃklad:
alert( formátujDatum(new Date(new Date - 1)) ); // "právÄ teÄ"
alert( formátujDatum(new Date(new Date - 30 * 1000)) ); // "pÅed 30 s"
alert( formátujDatum(new Date(new Date - 5 * 60 * 1000)) ); // "pÅed 5 min."
// vÄerejšà datum ve formátu 31.12.16 20:00
alert( formátujDatum(new Date(new Date - 86400 * 1000)) );
Abychom zÃskali Äas, který uplynul od data datum do nynÄjÅ¡ka, odeÄteme data.
function formátujDatum(datum) {
let rozdÃl = new Date() - datum; // rozdÃl v milisekundách
if (rozdÃl < 1000) { // ménÄ než 1 sekunda
return 'právÄ teÄ';
}
let sec = Math.floor(rozdÃl / 1000); // pÅevedeme rozdÃl na sekundy
if (sec < 60) {
return 'pÅed ' + sec + ' s';
}
let min = Math.floor(rozdÃl / 60000); // pÅevedeme rozdÃl na minuty
if (min < 60) {
return 'pÅed ' + min + ' min.';
}
// naformátujeme datum
// pÅed jednociferný den/mÄsÃc/hodiny/minuty pÅidáme nulu
let d = datum;
d = [
'0' + d.getDate(),
'0' + (d.getMonth() + 1),
'' + d.getFullYear(),
'0' + d.getHours(),
'0' + d.getMinutes()
].map(složka => složka.slice(-2)); // z každé složky vezmeme poslednà 2 ÄÃslice
// spojÃme složky do data
return d.slice(0, 3).join('.') + ' ' + d.slice(3).join(':');
}
alert( formátujDatum(new Date(new Date - 1)) ); // "právÄ teÄ"
alert( formátujDatum(new Date(new Date - 30 * 1000)) ); // "pÅed 30 s"
alert( formátujDatum(new Date(new Date - 5 * 60 * 1000)) ); // "pÅed 5 min."
// vÄerejšà datum ve formátu 31.12.2016 20:00
alert( formátujDatum(new Date(new Date - 86400 * 1000)) );
Alternativnà ÅeÅ¡enÃ:
function formátujDatum(datum) {
let denVMÄsÃci = datum.getDate();
let mÄsÃc = datum.getMonth() + 1;
let rok = datum.getFullYear();
let hodina = datum.getHours();
let minuta = datum.getMinutes();
let rozdÃlMs = new Date() - datum;
let rozdÃlSec = Math.round(rozdÃlMs / 1000);
let rozdÃlMin = rozdÃlSec / 60;
let rozdÃlHod = rozdÃlMin / 60;
// formátovánÃ
rok = rok.toString().slice(-2);
mÄsÃc = mÄsÃc < 10 ? '0' + mÄsÃc : mÄsÃc;
denVMÄsÃci = denVMÄsÃci < 10 ? '0' + denVMÄsÃci : denVMÄsÃci;
hodina = hodina < 10 ? '0' + hodina : hodina;
minuta = minuta < 10 ? '0' + minuta : minuta;
if (rozdÃlSec < 1) {
return 'právÄ teÄ';
} else if (rozdÃlMin < 1) {
return `pÅed ${rozdÃlSec} s`
} else if (rozdÃlHod < 1) {
return `pÅed ${rozdÃlMin} min.`
} else {
return `${denVMÄsÃci}.${mÄsÃc}.${rok} ${hodina}:${minuta}`
}
}
alert( formátujDatum(new Date(new Date - 1)) ); // "právÄ teÄ"
alert( formátujDatum(new Date(new Date - 30 * 1000)) ); // "pÅed 30 s"
alert( formátujDatum(new Date(new Date - 5 * 60 * 1000)) ); // "pÅed 5 min."
// vÄerejšà datum, napÅ. 31.12.2016 20:00
alert( formátujDatum(new Date(new Date - 86400 * 1000)) );