-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathunixTime.js
93 lines (87 loc) · 2.87 KB
/
unixTime.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// https://akelpad.sourceforge.net/forum/viewtopic.php?p=12600#p12600
// https://infocatcher.ucoz.net/js/akelpad_scripts/unixTime.js
// https://github.com/Infocatcher/AkelPad_scripts/blob/master/unixTime.js
// (c) Infocatcher 2011-2012
// Version: 0.1.3 - 2012-12-03
// Author: Infocatcher
//// Convert Unix time
var TU_AUTO = 0;
var TU_S = 1;
var TU_MS = 2;
var treatAsUTC = getArg("treatAsUTC", true);
var timeUnit = getArg("timeUnit", TU_AUTO);
var date = AkelPad.GetSelText().replace(/^\s+|\s+$/g, "");
if(/^(\d+|0x[0-9a-f]+)$/i.test(date)) {
date = Number(date);
if(timeUnit == TU_S || timeUnit == TU_AUTO && date < 3e9)
date *= 1000;
}
else if(/^([0-3]?\d)\D([01]?\d)\D(\d{4})(\s+([0-2]?\d)\D([0-6]?\d)(\D([0-6]?\d))?)?$/.test(date)) {
// dd.MM.yyyy[ HH:mm[:ss]]
with(RegExp)
date = new Date($3, $2 - 1, $1, $5, $6, $8);
}
else if(/^(\d{4})\D([01]?\d)\D([0-3]?\d)(\s+([0-2]?\d)\D([0-6]?\d)(\D([0-6]?\d))?)?$/.test(date)) {
// yyyy.MM.dd[ HH:mm[:ss]]
with(RegExp)
date = new Date($1, $2 - 1, $3, $5, $6, $8);
}
else if(/^([0-2]?\d)\D([0-6]?\d)(\D([0-6]?\d))?\s+([0-3]?\d)\D([01]?\d)\D(\d{4})$/.test(date)) {
// HH:mm[:ss] dd.MM.yyyy
with(RegExp)
date = new Date($7, $6 - 1, $5, $1, $2, $4);
}
if(!(date instanceof Date))
date = new Date(date);
else if(treatAsUTC) {
var tzo = date.getTimezoneOffset();
date.setMinutes(date.getMinutes() - tzo);
}
var tzo = date.getTimezoneOffset();
var ms = date.getTime();
var s = Math.round(ms/1000);
var tf = function(funcName) {
if(treatAsUTC)
return funcName.substr(0, 3) + "UTC" + funcName.substr(3);
return funcName;
};
var dates = [
date.toLocaleString(),
date[tf("getFullYear")]() + "-" + padLeft(date[tf("getMonth")]() + 1) + "-" + padLeft(date[tf("getDate")]()) + " "
+ padLeft(date[tf("getHours")]()) + ":" + padLeft(date[tf("getMinutes")]()) + ":" + padLeft(date[tf("getSeconds")]())
+ " UTC" + (treatAsUTC ? "" : getTimezone(tzo)),
date.toUTCString(),
date.toString(),
ms,
s,
(s < 0 ? "-" : "") + "0x" + Math.abs(s).toString(16)
].join("\n");
AkelPad.MessageBox(AkelPad.GetMainWnd(), dates, WScript.ScriptName, 64 /*MB_ICONINFORMATION*/);
function padLeft(n) {
var chr = "0";
var cnt = 2;
n = String(n);
var l = n.length;
return l < cnt
? new Array(cnt - n.length + 1).join(chr) + n
: n;
}
function getTimezone(tzo) {
var m = Math.abs(tzo);
var h = Math.floor(m/60);
m = Math.floor(m - h*60);
return (tzo > 0 ? "-" : "+") + padLeft(h) + padLeft(m);
}
function getArg(argName, defaultVal) {
var args = {};
for(var i = 0, argsCount = WScript.Arguments.length; i < argsCount; ++i)
if(/^[-\/](\w+)(=(.+))?$/.test(WScript.Arguments(i)))
args[RegExp.$1.toLowerCase()] = RegExp.$3 ? eval(RegExp.$3) : true;
getArg = function(argName, defaultVal) {
argName = argName.toLowerCase();
return typeof args[argName] == "undefined" // argName in args
? defaultVal
: args[argName];
};
return getArg(argName, defaultVal);
}