node-opcua-date-time
Advanced tools
Comparing version 0.2.3 to 0.3.0
{ | ||
"name": "node-opcua-date-time", | ||
"main": "./src/date_time.js", | ||
"version": "0.2.3", | ||
"version": "0.3.0", | ||
"description": "pure nodejs OPCUA SDK - module -date-time", | ||
@@ -10,3 +10,3 @@ "scripts": { | ||
"dependencies": { | ||
"node-opcua-assert": "^0.2.0", | ||
"node-opcua-assert": "^0.3.0", | ||
"underscore": "^1.8.3" | ||
@@ -16,4 +16,4 @@ }, | ||
"bignumber.js": "^6.0.0", | ||
"node-opcua-benchmarker": "^0.2.0", | ||
"node-opcua-binary-stream": "^0.2.3", | ||
"node-opcua-benchmarker": "^0.3.0", | ||
"node-opcua-binary-stream": "^0.3.0", | ||
"should": "13.2.1" | ||
@@ -20,0 +20,0 @@ }, |
"use strict"; | ||
var assert = require("node-opcua-assert"); | ||
var _ = require("underscore"); | ||
const assert = require("node-opcua-assert").assert; | ||
const _ = require("underscore"); | ||
var offset_factor_1601 = (function () { | ||
const offset_factor_1601 = (function () { | ||
var utc1600 = new Date(Date.UTC(1601, 0, 1, 0, 0, 0)); | ||
var t1600 = utc1600.getTime(); | ||
const utc1600 = new Date(Date.UTC(1601, 0, 1, 0, 0, 0)); | ||
const t1600 = utc1600.getTime(); | ||
var utc1600_plus_one_day = new Date(Date.UTC(1601, 0, 2, 0, 0, 0)); | ||
var t1600_1d = utc1600_plus_one_day.getTime(); | ||
const utc1600_plus_one_day = new Date(Date.UTC(1601, 0, 2, 0, 0, 0)); | ||
const t1600_1d = utc1600_plus_one_day.getTime(); | ||
var factor = (24 * 60 * 60 * 1000) * 10000 / (t1600_1d - t1600); | ||
const factor = (24 * 60 * 60 * 1000) * 10000 / (t1600_1d - t1600); | ||
var utc1970 = new Date(Date.UTC(1970, 0, 1, 0, 0, 0)); | ||
var t1970 = utc1970.getTime(); | ||
const utc1970 = new Date(Date.UTC(1970, 0, 1, 0, 0, 0)); | ||
const t1970 = utc1970.getTime(); | ||
var offsetToGregorianCalendarZero = -t1600 + t1970; | ||
const offsetToGregorianCalendarZero = -t1600 + t1970; | ||
@@ -28,12 +28,12 @@ assert(factor === 10000); | ||
var offset = offset_factor_1601[0]; | ||
var factor = offset_factor_1601[1]; | ||
const offset = offset_factor_1601[0]; | ||
const factor = offset_factor_1601[1]; | ||
var F = 0x100000000; | ||
var A = factor / F; | ||
var B = offset * A; | ||
var oh = Math.floor(offset / F); | ||
var ol = offset % F; | ||
var fl = factor % F; | ||
var F_div_factor = (F / factor); | ||
const F = 0x100000000; | ||
const A = factor / F; | ||
const B = offset * A; | ||
const oh = Math.floor(offset / F); | ||
const ol = offset % F; | ||
const fl = factor % F; | ||
const F_div_factor = (F / factor); | ||
@@ -88,3 +88,3 @@ // Extracted from OpcUA Spec v1.02 : part 6: | ||
// | ||
var t = date.getTime(); // number of milliseconds since since 1 January 1970 00:00:00 UTC. | ||
const t = date.getTime(); // number of milliseconds since since 1 January 1970 00:00:00 UTC. | ||
@@ -112,6 +112,6 @@ //Note: | ||
var value_h = Math.floor(t * A + B); | ||
var value_l = ((t % F + ol) * fl) % F; | ||
const value_h = Math.floor(t * A + B); | ||
let value_l = ((t % F + ol) * fl) % F; | ||
value_l = (value_l + F) % F; | ||
var high_low = [value_h, value_l]; | ||
const high_low = [value_h, value_l]; | ||
date.high_low = high_low; | ||
@@ -133,4 +133,4 @@ return high_low; | ||
// o = oh * F + ol | ||
var value1 = (Math.floor(high / factor) - oh) * F + Math.floor((high % factor) * F_div_factor + low / factor) - ol; | ||
var date = new Date(value1); | ||
const value1 = (Math.floor(high / factor) - oh) * F + Math.floor((high % factor) * F_div_factor + low / factor) - ol; | ||
const date = new Date(value1); | ||
@@ -151,7 +151,7 @@ // enrich the date | ||
var last_now_date = null; | ||
var last_picoseconds = 0; | ||
let last_now_date = null; | ||
let last_picoseconds = 0; | ||
function getCurrentClock() { | ||
var now = new Date(); | ||
const now = new Date(); | ||
if (last_now_date && now.getTime() === last_now_date.getTime()) { | ||
@@ -158,0 +158,0 @@ last_picoseconds += 1; |
"use strict"; | ||
var assert = require("node-opcua-assert"); | ||
var _ =require("underscore"); | ||
const assert = require("node-opcua-assert").assert; | ||
const _ =require("underscore"); | ||
var date_time = require("./date_time"); | ||
var bn_dateToHundredNanoSecondFrom1601 = date_time.bn_dateToHundredNanoSecondFrom1601; | ||
var bn_hundredNanoSecondFrom1601ToDate = date_time.bn_hundredNanoSecondFrom1601ToDate; | ||
const date_time = require("./date_time"); | ||
const bn_dateToHundredNanoSecondFrom1601 = date_time.bn_dateToHundredNanoSecondFrom1601; | ||
const bn_hundredNanoSecondFrom1601ToDate = date_time.bn_hundredNanoSecondFrom1601ToDate; | ||
@@ -31,3 +31,3 @@ | ||
exports.randomDateTime = function () { | ||
var r = getRandomInt; | ||
const r = getRandomInt; | ||
return new Date( | ||
@@ -50,5 +50,5 @@ 1900 + r(0, 200), r(0, 11), r(0, 28), | ||
assert(date instanceof Date); | ||
var hl = bn_dateToHundredNanoSecondFrom1601(date); | ||
var hi = hl[0]; | ||
var lo = hl[1]; | ||
let hl = bn_dateToHundredNanoSecondFrom1601(date); | ||
let hi = hl[0]; | ||
let lo = hl[1]; | ||
@@ -60,3 +60,3 @@ // make sure that date are not lower than expected limit | ||
if (hi <0 || lo<0 || hi > MAXUINT32 || lo > MAXUINT32 ) { | ||
var hl = bn_dateToHundredNanoSecondFrom1601(date); | ||
hl = bn_dateToHundredNanoSecondFrom1601(date); | ||
throw new Error("INVALID " + hi + " "+lo + " "+date.toUTCString()); | ||
@@ -70,4 +70,4 @@ } | ||
exports.decodeDateTime = function (stream) { | ||
var lo = stream.readUInt32(); | ||
var hi = stream.readUInt32(); | ||
const lo = stream.readUInt32(); | ||
const hi = stream.readUInt32(); | ||
return bn_hundredNanoSecondFrom1601ToDate(hi, lo); | ||
@@ -74,0 +74,0 @@ }; |
"use strict"; | ||
var should = require("should"); | ||
const should = require("should"); | ||
var _ = require("underscore"); | ||
var BinaryStream = require("node-opcua-binary-stream").BinaryStream; | ||
const _ = require("underscore"); | ||
const BinaryStream = require("node-opcua-binary-stream").BinaryStream; | ||
var date_time = require(".."); | ||
var ec = require("../src/encode_decode"); | ||
const date_time = require(".."); | ||
const ec = require("../src/encode_decode"); | ||
var offset_factor_1601 = date_time.offset_factor_1601; | ||
var offset = offset_factor_1601[0]; | ||
var factor = offset_factor_1601[1]; | ||
const offset_factor_1601 = date_time.offset_factor_1601; | ||
const offset = offset_factor_1601[0]; | ||
const factor = offset_factor_1601[1]; | ||
@@ -23,7 +23,7 @@ function isValidUInt32(value) { | ||
// deprecated (inaccurate) | ||
var assert = require("node-opcua-assert"); | ||
const assert = require("node-opcua-assert").assert; | ||
function deprecated_dateToHundredNanoSecondFrom1601(date) { | ||
assert(date instanceof Date); | ||
var t = date.getTime(); // number of milliseconds since 1/1/70 | ||
const t = date.getTime(); // number of milliseconds since 1/1/70 | ||
assert(new Date(t).getTime() === t); | ||
@@ -45,5 +45,5 @@ | ||
var date = new Date(2014, 0, 1); | ||
var nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
var date2 = deprecated_hundredNanoSecondFrom1601ToDate(nano); | ||
const date = new Date(2014, 0, 1); | ||
const nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
const date2 = deprecated_hundredNanoSecondFrom1601ToDate(nano); | ||
date2.toString().should.equal(date.toString()); | ||
@@ -54,4 +54,4 @@ | ||
var date = new Date(Date.UTC(1601, 0, 1, 0, 0)); | ||
var nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
const date = new Date(Date.UTC(1601, 0, 1, 0, 0)); | ||
const nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
nano.should.equal(0); | ||
@@ -62,6 +62,6 @@ }); | ||
var date = new Date(Date.UTC(1601, 0, 2, 0, 0)); | ||
var nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
const date = new Date(Date.UTC(1601, 0, 2, 0, 0)); | ||
const nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
nano.should.equal(24 * 60 * 60 * 1000 * 10000); | ||
var date2 = deprecated_hundredNanoSecondFrom1601ToDate(nano); | ||
const date2 = deprecated_hundredNanoSecondFrom1601ToDate(nano); | ||
date2.toString().should.equal(date.toString()); | ||
@@ -72,5 +72,5 @@ }); | ||
var date = new Date(1789, 6, 14, 19, 47); | ||
var nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
var date2 = deprecated_hundredNanoSecondFrom1601ToDate(nano); | ||
const date = new Date(1789, 6, 14, 19, 47); | ||
const nano = deprecated_dateToHundredNanoSecondFrom1601(date); | ||
const date2 = deprecated_hundredNanoSecondFrom1601ToDate(nano); | ||
@@ -90,4 +90,4 @@ date2.toString().should.equal(date.toString()); | ||
var january = 1; | ||
var first_of_jan_1970_UTC = new Date(Date.UTC(1970, january - 1, 1, 0, 0, 0)); | ||
const january = 1; | ||
const first_of_jan_1970_UTC = new Date(Date.UTC(1970, january - 1, 1, 0, 0, 0)); | ||
@@ -104,5 +104,5 @@ //xx console.log("\n UTC Time ",first_of_jan_1970_UTC.toUTCString()); | ||
it("bn_dateToHundredNanoSecondFrom1601 should return n=(number of nanosecond in a single day) for January, 2nd 1601 00:00:00 UTC", function () { | ||
var date = new Date(Date.UTC(1601, 0, 2, 0, 0, 0)); | ||
var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
var value = 24 * 60 * 60 * 1000 * 10000; // number of nanosecond in a single day | ||
const date = new Date(Date.UTC(1601, 0, 2, 0, 0, 0)); | ||
const nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
const value = 24 * 60 * 60 * 1000 * 10000; // number of nanosecond in a single day | ||
nano[0].should.equal(Math.floor(value / 0x100000000)); | ||
@@ -114,3 +114,3 @@ nano[1].should.equal(value % 0x100000000); | ||
var buf = new Buffer(8); | ||
const buf = new Buffer(8); | ||
buf.writeUInt32LE(0xd353c292, 0); | ||
@@ -124,4 +124,4 @@ buf.writeUInt32LE(0x01cef70c, 4); | ||
var stream = new BinaryStream(buf); | ||
var date = ec.decodeDateTime(stream); | ||
const stream = new BinaryStream(buf); | ||
const date = ec.decodeDateTime(stream); | ||
//xx console.log("DDD = ",date.toUTCString(), " ms=", date.getMilliseconds()); | ||
@@ -133,13 +133,13 @@ date.toISOString().should.eql("2013-12-12T07:36:09.747Z"); | ||
var date1 = new Date(Date.UTC(2013, 11, 12, 7, 36, 6)); | ||
const date1 = new Date(Date.UTC(2013, 11, 12, 7, 36, 6)); | ||
date1.toISOString().should.eql("2013-12-12T07:36:06.000Z"); | ||
var t1 = date1.getTime(); | ||
var q1 = date_time.bn_dateToHundredNanoSecondFrom1601(date1); | ||
const t1 = date1.getTime(); | ||
const q1 = date_time.bn_dateToHundredNanoSecondFrom1601(date1); | ||
// construct the same date with 713 millisecond more ... | ||
var date2 = new Date(Date.UTC(2013, 11, 12, 7, 36, 6)); | ||
const date2 = new Date(Date.UTC(2013, 11, 12, 7, 36, 6)); | ||
date2.setMilliseconds(713); | ||
date2.toISOString().should.eql("2013-12-12T07:36:06.713Z"); | ||
var t2 = date2.getTime(); | ||
var q2 = date_time.bn_dateToHundredNanoSecondFrom1601(date2); | ||
const t2 = date2.getTime(); | ||
const q2 = date_time.bn_dateToHundredNanoSecondFrom1601(date2); | ||
@@ -156,11 +156,11 @@ (t2 - t1).should.eql(713, " there must be a difference of 713 milliseconds"); | ||
var BigNumber = require("bignumber.js"); | ||
const BigNumber = require("bignumber.js"); | ||
function bn_dateToHundredNanoSecondFrom1601_big_number(date) { | ||
assert(date instanceof Date); | ||
var t = date.getTime(); // number of milliseconds since 1/1/70 | ||
const t = date.getTime(); // number of milliseconds since 1/1/70 | ||
var bn_value = new BigNumber(t).plus(offset).times(factor); | ||
var high = bn_value.div(0x100000000); | ||
var low = bn_value.mod(0x100000000); | ||
const bn_value = new BigNumber(t).plus(offset).times(factor); | ||
const high = bn_value.div(0x100000000); | ||
const low = bn_value.mod(0x100000000); | ||
return [parseInt(high.toString(), 10), parseInt(low.toString(), 10)]; | ||
@@ -170,5 +170,5 @@ } | ||
function bn_hundredNanoSecondFrom1601ToDate_big_number(high, low) { | ||
var offset = offset_factor_1601[0]; | ||
var factor = offset_factor_1601[1]; | ||
var value = new BigNumber(high).times(0x100000000).plus(low).div(factor).minus(offset); | ||
const offset = offset_factor_1601[0]; | ||
const factor = offset_factor_1601[1]; | ||
let value = new BigNumber(high).times(0x100000000).plus(low).div(factor).minus(offset); | ||
value = parseInt(value, 10); | ||
@@ -179,3 +179,3 @@ return new Date(value); | ||
var Benchmarker = require("node-opcua-benchmarker").Benchmarker; | ||
const Benchmarker = require("node-opcua-benchmarker").Benchmarker; | ||
@@ -186,5 +186,5 @@ describe("Benchmarking Date conversion routines", function () { | ||
var date = new Date(2014, 0, 1); | ||
var nano1 = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
var nano2 = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
const date = new Date(2014, 0, 1); | ||
const nano1 = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
const nano2 = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
nano1.should.eql(nano2); | ||
@@ -195,8 +195,8 @@ }); | ||
var bench = new Benchmarker(); | ||
const bench = new Benchmarker(); | ||
bench.add('bn_dateToHundredNanoSecondFrom1601_safe', function () { | ||
var date = new Date(2014, 0, 1); | ||
var nano = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
const date = new Date(2014, 0, 1); | ||
const nano = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
@@ -206,4 +206,4 @@ }) | ||
var date = new Date(2014, 0, 1); | ||
var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
const date = new Date(2014, 0, 1); | ||
const nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
@@ -227,6 +227,6 @@ }) | ||
var date = new Date(2014, 0, 1); | ||
var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
const date = new Date(2014, 0, 1); | ||
const nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
var bench = new Benchmarker(); | ||
const bench = new Benchmarker(); | ||
bench.add('bn_hundredNanoSecondFrom1601ToDate_safe', function () { | ||
@@ -255,3 +255,3 @@ bn_hundredNanoSecondFrom1601ToDate_big_number(nano[0], nano[1]); | ||
var dates_to_check = [ | ||
const dates_to_check = [ | ||
new Date(1, 1, 1601), | ||
@@ -264,12 +264,12 @@ new Date(14, 7, 1789), | ||
]; | ||
var i; | ||
let i; | ||
for (i = 0; i < 100; i++) { | ||
dates_to_check.push(ec.randomDateTime()); | ||
} | ||
var date, check_date, check_date_bn; | ||
var bs = new BinaryStream(); | ||
let date, check_date, check_date_bn; | ||
const bs = new BinaryStream(); | ||
for (i = 0; i < dates_to_check.length; i++) { | ||
date = dates_to_check[i]; | ||
var hl = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
var hl_bn = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
const hl = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
const hl_bn = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
@@ -289,4 +289,4 @@ check_date = date_time.bn_hundredNanoSecondFrom1601ToDate(hl[0], hl[1]); | ||
it("bn_dateToHundredNanoSecondFrom1601 should return 0 for January, 1st 1601 00:00:00 UTC", function () { | ||
var date = new Date(Date.UTC(1601, 0, 1, 0, 0, 0)); | ||
var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
const date = new Date(Date.UTC(1601, 0, 1, 0, 0, 0)); | ||
const nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
nano[0].should.equal(0); | ||
@@ -298,5 +298,5 @@ nano[1].should.equal(0); | ||
var date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0)); | ||
var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
var verif = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
const date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0)); | ||
const nano = date_time.bn_dateToHundredNanoSecondFrom1601(date); | ||
const verif = bn_dateToHundredNanoSecondFrom1601_big_number(date); | ||
//xx console.log(date.toUTCString(), "0x0"+nano[0].toString(16),"0x"+nano[1].toString(16),nano,verif[0].toString(16),verif[1].toString(16)); | ||
@@ -336,9 +336,9 @@ nano[0].should.equal(0x019DB1DE); // hi | ||
var date1 = new Date(Date.UTC(2010, 2, 25)); | ||
var date2 = new Date(Date.UTC(2011, 2, 25)); | ||
const date1 = new Date(Date.UTC(2010, 2, 25)); | ||
const date2 = new Date(Date.UTC(2011, 2, 25)); | ||
// number of millisecond , not adjusted | ||
var nms = 1000 * 60 * 60 * 24 * 365; | ||
const nms = 1000 * 60 * 60 * 24 * 365; | ||
var diff1 = date2.getTime() - date1.getTime(); | ||
const diff1 = date2.getTime() - date1.getTime(); | ||
@@ -348,5 +348,5 @@ // according to http://en.wikipedia.org/wiki/Leap_second | ||
// causing this year to be (1000*60*60*24*365 + 1000) milliseconds long | ||
var date3 = new Date(Date.UTC(2012, 2, 25)); | ||
var date4 = new Date(Date.UTC(2013, 2, 25)); | ||
var diff2 = date4.getTime() - date3.getTime(); | ||
const date3 = new Date(Date.UTC(2012, 2, 25)); | ||
const date4 = new Date(Date.UTC(2013, 2, 25)); | ||
const diff2 = date4.getTime() - date3.getTime(); | ||
(diff2 - nms).should.eql(0, "I though Javascript used a simplified version of UTC time , that ignore leap seconds"); | ||
@@ -357,13 +357,13 @@ | ||
var n_leap = 366 * 24 * 60 * 60; | ||
var n_no_leap = 365 * 24 * 60 * 60; | ||
const n_leap = 366 * 24 * 60 * 60; | ||
const n_no_leap = 365 * 24 * 60 * 60; | ||
function inner_test(year) { | ||
var date1 = new Date(Date.UTC(year, 1, 25)); // year February 25th | ||
var date2 = new Date(Date.UTC(year + 1, 1, 25)); // year February 25th | ||
const date1 = new Date(Date.UTC(year, 1, 25)); // year February 25th | ||
const date2 = new Date(Date.UTC(year + 1, 1, 25)); // year February 25th | ||
var n = ((year % 4 ) === 0) ? n_leap : n_no_leap; | ||
const n = ((year % 4 ) === 0) ? n_leap : n_no_leap; | ||
var d = (date2.getTime() - date1.getTime()) / 1000; | ||
const d = (date2.getTime() - date1.getTime()) / 1000; | ||
(d - n).should.eql(0); | ||
@@ -373,3 +373,3 @@ // console.log("year = ", year, date1.toUTCString(), " => ",d,n,d -n); | ||
for (var y = 1970; y < 2020; y++) { | ||
for (let y = 1970; y < 2020; y++) { | ||
inner_test(y); | ||
@@ -376,0 +376,0 @@ } |
24340
+ Addedansi-styles@3.2.1(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedcolor-convert@1.9.3(transitive)
+ Addedcolor-name@1.1.3(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addednode-opcua-assert@0.3.0(transitive)
+ Addedsupports-color@5.5.0(transitive)
- Removednode-opcua-assert@0.2.0(transitive)
Updatednode-opcua-assert@^0.3.0