datefns
by pbatey
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.28.5/date_fns.min.js"></script>
<pre id=pre></pre>
TypeScript
/**
* 31.03.2019 02:00 forward to 03:=0
https://www.schulferien.org/oesterreich/zeit/zeitumstellung/2019/
*/
var millisXUtc = Date.UTC(2019, 2, 31, 0, 17, 0);
var dateX = new Date(millisXUtc);
var outputText = ''
function log(text) {
outputText = outputText + '\n' + text;
}
function logDate(date, text) {
outputText = outputText + '\n' +
date.toISOString()
// +' / '+date.getTime()
+ ' / '+date.toTimeString() +': '+ text;
}
logDate(dateX, 'date');
var dateXp1h = dateFns.addHours(dateX, 1);
logDate(dateXp1h, 'date+1h');
logDate(dateFns.addHours(dateX, 2), 'date+2h');
logDate(dateFns.addHours(dateX, 3), 'date+3h');
var dateXp1d = dateFns.addDays(dateX, 1);
logDate(dateXp1d, 'date+1d');
var incDay = new Date(dateX);
incDay.setDate(incDay.getDate() + 1);
logDate(incDay, 'incDay');
var millisX = Date.UTC(dateX.getFullYear(), dateX.getMonth(), dateX.getDate()+1, dateX.getHours(), dateX.getMinutes(), dateX.getSeconds(), dateX.getMilliseconds());
log('1:'+millisXUtc);
log('2:'+millisX);
var dateXUtcPlus1 = new Date(millisX);
logDate(dateXUtcPlus1, 'dateXUtcPlus1');
// 31.03.2019 02:15 does not exist in Europe/Vienna
var nonExising = new Date(2019, 2, 31, 2, 15);
// note: chrome automatically increases the time by another hour
logDate(nonExising, 'nonExising');
var element = document.getElementById("pre")
element.innerHTML = outputText