JSFiddle - React, Tailwind, and code Playground
by kottup
HTML
<div>
<label>UnixEpoch[s]:</label>
<input type="text" id="txtUnixEpoch">
</div>
<input type="button" value="↓date string" id="btnToDateTime" onclick="calcToDate()">
<input type="button" value="↑unix epoch" id="btnToUnixEpoch" onclick="calcToEpoch()">
<input type="button" value="now" id="btnNow" onclick="calcNow()">
<div>
<label>Date Time:</label>
<input type="text" id="txtDateTime">
</div>
<hr size=1 color="#aab123"/>
<label>GPS Time (time + leap seconds)</label>
<table class="gpstable">
<tr><td>Leap seconds :</td><td><label id="lblLeapSec"></label></td></tr>
<tr><td>GPS Time :</td><td><label id="lblGPSTime"></label></td></tr>
<tr><td>Week Number :</td><td><label id="lblGPSwn"></label></td></tr>
<tr><td>Time of week :</td><td><label id="lblGPStow"></label></td></tr>
</table>
CSS
.gpstable {border-collapse: collapse;}
.gpstable td {border: 1px #aab123 solid; text-align: right}
JavaScript
var ADD_ADJUSTMENT = new Array(
"19810630235960",
"19820630235960",
"19830630235960",
"19850630235960",
"19871231235960",
"19891231235960",
"19901231235960",
"19920630235960",
"19930630235960",
"19940630235960",
"19951231235960",
"19970630235960",
"19981231235960",
"20051231235960",
"20081231235960",
"20120630235960",
"20150630235960"
);
var GPS_BASEDATE = new Date("1980-01-06 00:00:00");
var GPS_BASE_UES = 315932400; // unix epoch seconds of 1980-01-06 00:00:00
function pad(n){return ("0" + n).slice(-2)}
function getDateArray(sec){
var darr = [];
var d = new Date();
d.setTime(sec * 1000);
darr[0] = (d.getYear() + 1900);
darr[1] = pad(d.getMonth() + 1);
darr[2] = pad(d.getDate());
darr[3] = pad(d.getHours());
darr[4] = pad(d.getMinutes());
darr[5] = pad(d.getSeconds());
return darr;
}
function getLeapSec(datestr){
var leap = 0;
for(leap = 0; leap < ADD_ADJUSTMENT.length; leap++){
if(datestr < ADD_ADJUSTMENT[leap]){
break;
}
}
return leap;
}
function getDateStr(array){
return array[0]+"-"+array[1]+"-"+array[2]+" "+array[3]+":"+array[4]+":"+array[5];
}
function calcToDate(){
var txtunixe = $("#txtUnixEpoch");
var txtdate = $("#txtDateTime");
var lblleap = $("#lblLeapSec");
var lblgpstime = $("#lblGPSTime");
var lblgpswn = $("#lblGPSwn");
var lblgpstow = $("#lblGPStow");
var epo = parseInt(txtunixe.val());
var darr = getDateArray(epo);
var leap = getLeapSec(darr.join(""));
var epogps = epo + leap;
var darrgps = getDateArray(epogps);
txtdate.val(getDateStr(darr));
lblleap.text(leap);
lblgpstime.text(getDateStr(darrgps));
if(epo < GPS_BASE_UES){
alert("UnixEpoch[s] must be a value greater than 315932400(1980-01-06 00:00:00).");
return;
}
var wn =...