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');

logDate(dateFns.parse('2020-08-03T0800-0600', "yyy-MM-dd'T'HHmmXX", Date.now()), 'pjb')


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