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 =...