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",
"UNIX Timestamp to Windows Filetime",
"Extract dates",
"Generate Current Epoch",
"Get Time",
"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;