diff --git a/src/core/config/OperationConfig.js b/src/core/config/OperationConfig.js index 0397b50e..d5688f28 100755 --- a/src/core/config/OperationConfig.js +++ b/src/core/config/OperationConfig.js @@ -2271,6 +2271,11 @@ const OperationConfig = { name: "Output units", type: "option", value: DateTime.UNITS + }, + { + name: "Input Format", + type: "option", + value: DateTime.FILETIME_FORMATS } ] }, @@ -2284,6 +2289,11 @@ const OperationConfig = { name: "Input units", type: "option", value: DateTime.UNITS + }, + { + name: "Output Format", + type: "option", + value: DateTime.FILETIME_FORMATS } ] }, diff --git a/src/core/operations/DateTime.js b/src/core/operations/DateTime.js index 5262ecc4..dcfa2faf 100755 --- a/src/core/operations/DateTime.js +++ b/src/core/operations/DateTime.js @@ -90,7 +90,13 @@ const DateTime = { */ runFromFiletimeToUnix: function(input, args) { let units = args[0]; - input = new BigInteger(input).subtract(new BigInteger("116444736000000000")); + let format = args[1]; + if (format === "Hex") { + input = new BigInteger(input, 16); + } else { + input = new BigInteger(input); + } + input = input.subtract(new BigInteger("116444736000000000")); if (units === "Seconds (s)"){ input = input.divide(new BigInteger("10000000")); } else if (units === "Milliseconds (ms)") { @@ -116,6 +122,7 @@ const DateTime = { */ runToFiletimeFromUnix: function(input, args) { let units = args[0]; + let format = args[1]; input = new BigInteger(input); if (units === "Seconds (s)"){ input = input.multiply(new BigInteger("10000000")); @@ -128,10 +135,22 @@ const DateTime = { } else { throw "Unrecognised unit"; } - return input.add(new BigInteger("116444736000000000")).toString(); + input = input.add(new BigInteger("116444736000000000")); + if (format === "Hex"){ + return input.toString(16); + } else { + return input.toString(); + } }, + /** + * @constant + * @default + */ + FILETIME_FORMATS: ["Decimal", "Hex"], + + /** * @constant * @default