Renamed 'Generate Current Epoch' to 'Get Time'. It now uses the W3C High Resolution Time API and supports microsecond granularity

This commit is contained in:
n1474335 2021-02-11 18:47:44 +00:00
parent e6c7899569
commit 61a1c44f26
3 changed files with 63 additions and 50 deletions

View File

@ -267,7 +267,7 @@
"Windows Filetime to UNIX Timestamp", "Windows Filetime to UNIX Timestamp",
"UNIX Timestamp to Windows Filetime", "UNIX Timestamp to Windows Filetime",
"Extract dates", "Extract dates",
"Generate Current Epoch", "Get Time",
"Sleep" "Sleep"
] ]
}, },

View File

@ -1,49 +0,0 @@
/**
* @author n1073645 [n1073645@gmail.com]
* @copyright Crown Copyright 2020
* @license Apache-2.0
*/
import Operation from "../Operation.mjs";
/**
* GenerateCurrentEpoch operation
*/
class GenerateCurrentEpoch extends Operation {
/**
* GenerateCurrentEpoch constructor
*/
constructor() {
super();
this.name = "Generate Current Epoch";
this.module = "Default";
this.description = "Generates the current time(in seconds/milliseconds) since the UNIX epoch.";
this.infoURL = "https://wikipedia.org/wiki/Unix_time";
this.inputType = "string";
this.outputType = "string";
this.args = [
{
name: "Granularity",
type: "option",
value: ["Milliseconds", "Seconds"]
}
];
}
/**
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
run(input, args) {
if (args[0] === "Milliseconds")
return (new Date()).getTime().toString();
else
return Math.round((new Date()).getTime() / 1000).toString();
}
}
export default GenerateCurrentEpoch;

View File

@ -0,0 +1,62 @@
/**
* @author n1073645 [n1073645@gmail.com]
* @copyright Crown Copyright 2020
* @license Apache-2.0
*/
import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs";
import {UNITS} from "../lib/DateTime.mjs";
/**
* Get Time operation
*/
class GetTime extends Operation {
/**
* GetTime constructor
*/
constructor() {
super();
this.name = "Get Time";
this.module = "Default";
this.description = "Generates a timestamp showing the amount of time since the UNIX epoch (1970-01-01 00:00:00 UTC). Uses the W3C High Resolution Time API.";
this.infoURL = "https://wikipedia.org/wiki/Unix_time";
this.inputType = "string";
this.outputType = "number";
this.args = [
{
name: "Granularity",
type: "option",
value: UNITS
}
];
}
/**
* @param {string} input
* @param {Object[]} args
* @returns {number}
*/
run(input, args) {
const nowMs = (performance.timeOrigin + performance.now()),
granularity = args[0];
switch (granularity) {
case "Nanoseconds (ns)":
return Math.round(nowMs * 1000 * 1000);
case "Microseconds (μs)":
return Math.round(nowMs * 1000);
case "Milliseconds (ms)":
return Math.round(nowMs);
case "Seconds (s)":
return Math.round(nowMs / 1000);
default:
throw new OperationError("Unknown granularity value: " + granularity);
}
}
}
export default GetTime;