В настоящее время я занимаюсь созданием временной метки с часовым поясом в соответствии с определением типа данных TSWTZ PostGreSQL9.6 в javascript в моем проекте PEAN (Postgres, Express, Angular & Node).
Определение в соответствии с документом: TIMESTAMP WITH TIME ZONE '2004-10-19 10: 23: 54 + 02'
Я создал этот фрагмент кода здесь, и он работает, но я уверен, что он может быть улучшен без потери читаемости с помощью регулярного сопоставления / сопоставления с образцом или других подходов.
/* double digits for Date */
Date.prototype.yyyymmdd = function() {
var mm = (this.getMonth() + 1).toString(); // getMonth() based on 0
var dd = this.getDate().toString();
return [this.getFullYear(), mm.length===2 ? '' : '0', mm, dd.length===2 ? '' : '0', dd].join(''); // padding
};
/* double digits for time */
function checkTime(i) {
return (i < 10) ? "0" + i : i;
}
function getTSWTZ() {
/* get padded date */
var today = new Date();
var todayString = today.yyyymmdd();
var yyyy = todayString.slice(0,4);
var mm = todayString.slice(4,6);
var dd = todayString.slice(6,8);
var paddedDateString = yyyy + '-' + mm + '-' + dd + ' ';
/* get padded time */
h = checkTime(today.getHours());
m = checkTime(today.getMinutes());
s = checkTime(today.getSeconds());
paddedTimeString = h + ":" + m + ":" + s;
/* get offset of timezone */
var tzStr = new Date().toString();
var pos1 = tzStr.indexOf("GMT") +3;
var pos2 = pos1 + 3;
var offSetTimeZone = tzStr.slice(pos1, pos2);
var tswtz = paddedDateString + paddedTimeString + offSetTimeZone;
return tswtz;
};
Что вы думаете об этом?