setup-dotnet/node_modules/nimn-date-parser/dateparser.js

140 lines
3.1 KiB
JavaScript

var monthInitials = ["J","F","M","A","m","j","U","a","S","O","N","D"];
var initials = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
var timeZone = [
12*60,
11*60,
10*60,
9.5*60,
9*60,
8*60,
7*60,
6*60,
5*60,
4*60,
3.5*60,
3*60,
2*60,
1*60,
0*60,
-1*60,
-2*60,
-3*60,
-3.5*60,
-4*60,
-4.5*60,
-5*60,
-5.5*60,
-5.75*60,
-6*60,
-6.5*60,
-7*60,
-8*60,
-8.5*60,
-8.75*60,
-9*60,
-9.5*60,
-10*60,
-10.5*60,
-11*60,
-12*60,
-12.75*60,
-13*60,
-14*60
];
function parseToUTC(dtObj, includeDate, includeCentury, includeTime){
if(typeof dtObj === "string"){
dtObj = new Date(dtObj);
}
var dtStr = "";
if(includeCentury){
dtStr += char(Math.floor(dtObj.getUTCFullYear()/100)) ;
}
if(includeDate){//3
//year
dtStr += char(dtObj.getUTCFullYear()%100);
//month
dtStr += monthInitials[dtObj.getUTCMonth()];
//date
dtStr += initials[dtObj.getUTCDate()]
}
if(includeTime){//5
//h
dtStr += initials[dtObj.getUTCHours()]
//m
dtStr += initials[dtObj.getUTCMinutes()];
//s
dtStr += initials[dtObj.getUTCSeconds()];
//ms
var ms = dtObj.getUTCMilliseconds();
dtStr += char(Math.floor(ms/10)) ;
dtStr += char(ms%10) ;
}
//zone
//if(includeZone){//1
dtStr += initials[timeZone.indexOf(dtObj.getTimezoneOffset() ) ]
//}
return dtStr;
}
/**
*
* @param {*} dtStr
* @param {*} includeDate
* @param {*} includeCentury
* @param {*} includeTime
* @param {*} includeZone
*/
function parseBackUTC(dtStr,includeDate, includeCentury, includeTime){
var century = 0;
var startFrom = 0;
var Y = 0, M = 0, D = 0, h = 0, m = 0, s = 0, ms = 0, z = 0;
if(includeCentury){//1st digit is century
century = 100 * ascii(dtStr[startFrom++]);
}
if(includeDate){
Y = century + ascii(dtStr[startFrom++]);
M = monthInitials.indexOf(dtStr[startFrom++]);
D = initials.indexOf(dtStr[startFrom++])
//startFrom += 3;
}
if(includeTime){
h = initials.indexOf(dtStr[startFrom++]);
m = initials.indexOf(dtStr[startFrom++]);
s = initials.indexOf(dtStr[startFrom++]);
ms = ascii(dtStr[startFrom++])*10 + ascii(dtStr[startFrom++]);
//startFrom += 5;
}
var dt = new Date(Y,M,D,h,m,s,ms);
//if(includeZone){
z = timeZone[initials.indexOf(dtStr[startFrom])];
dt.setTime(dt.getTime() - z*60*1000);
//}
return dt;
}
function ascii(ch){
return ch.charCodeAt(0);
}
/**
* converts a ASCII number into equivalant ASCII char
* @param {number} a
* @returns ASCII char
*/
var char = function (a){
return String.fromCharCode(a);
}
exports.parse = parseToUTC;
exports.parseBack = parseBackUTC;