aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/comments/frontend/datetime.js
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/comments/frontend/datetime.js')
-rw-r--r--bootstrap/comments/frontend/datetime.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/bootstrap/comments/frontend/datetime.js b/bootstrap/comments/frontend/datetime.js
new file mode 100644
index 0000000..69425e9
--- /dev/null
+++ b/bootstrap/comments/frontend/datetime.js
@@ -0,0 +1,136 @@
+// Collection of convenient date and time functions (datetime.js)
+HashOverConstructor.prototype.dateTime = {
+ offsetRegex: /[0-9]{2}/g,
+ dashesRegex: /-/g,
+
+ // Simple PHP date function port
+ format: function (format, date)
+ {
+ format = format || 'DATE_ISO8601';
+ date = date || new Date ();
+
+ var hours = date.getHours ();
+ var ampm = (hours >= 12) ? 'pm' : 'am';
+ var day = date.getDate ();
+ var weekDay = date.getDay ();
+ var dayName = this.parent.locale['day-names'][weekDay];
+ var monthIndex = date.getMonth ();
+ var monthName = this.parent.locale['month-names'][monthIndex];
+ var hours12 = (hours % 12) ? hours % 12 : 12;
+ var minutes = date.getMinutes ();
+ var month = monthIndex + 1;
+ var offsetHours = (date.getTimezoneOffset() / 60) * 100;
+ var offset = ((offsetHours < 1000) ? '0' : '') + offsetHours;
+ var offsetColon = offset.match (this.offsetRegex).join (':');
+ var offsetPositivity = (offsetHours > 0) ? '-' : '+';
+ var seconds = date.getSeconds ();
+ var year = date.getFullYear ();
+
+ var characters = {
+ a: ampm,
+ A: ampm.toUpperCase (),
+ d: (day < 10) ? '0' + day : day,
+ D: dayName.substr (0, 3),
+ F: monthName,
+ g: hours12,
+ G: hours,
+ h: (hours12 < 10) ? '0' + hours12 : hours12,
+ H: (hours < 10) ? '0' + hours : hours,
+ i: (minutes < 10) ? '0' + minutes : minutes,
+ j: day,
+ l: dayName,
+ m: (month < 10) ? '0' + month : month,
+ M: monthName.substr (0, 3),
+ n: month,
+ N: weekDay + 1,
+ O: offsetPositivity + offset,
+ P: offsetPositivity + offsetColon,
+ s: (seconds < 10) ? '0' + seconds : seconds,
+ w: weekDay,
+ y: ('' + year).substr (2),
+ Y: year
+ };
+
+ // Convert dashes to underscores
+ var dateConstant = format.replace (this.dashesRegex, '_');
+
+ // Convert constant to uppercase
+ dateConstant = dateConstant.toUpperCase ();
+
+ switch (dateConstant) {
+ case 'DATE_ATOM':
+ case 'DATE_RFC3339':
+ case 'DATE_W3C': {
+ format = 'Y-m-d\TH:i:sP';
+ break;
+ }
+
+ case 'DATE_COOKIE': {
+ format = 'l, d-M-Y H:i:s';
+ break;
+ }
+
+ case 'DATE_ISO8601': {
+ format = 'Y-m-d\TH:i:sO';
+ break;
+ }
+
+ case 'DATE_RFC822':
+ case 'DATE_RFC1036': {
+ format = 'D, d M y H:i:s O';
+ break;
+ }
+
+ case 'DATE_RFC850': {
+ format = 'l, d-M-y H:i:s';
+ break;
+ }
+
+ case 'DATE_RFC1123':
+ case 'DATE_RFC2822':
+ case 'DATE_RSS': {
+ format = 'D, d M Y H:i:s O';
+ break;
+ }
+
+ case 'GNOME_DATE': {
+ format = 'D M d, g:i A';
+ break;
+ }
+
+ case 'US_DATE': {
+ format = 'm/d/Y';
+ break;
+ }
+
+ case 'STANDARD_DATE': {
+ format = 'Y-m-d';
+ break;
+ }
+
+ case '12H_TIME': {
+ format = 'g:ia';
+ break;
+ }
+
+ case '24H_TIME': {
+ format = 'H:i';
+ break;
+ }
+ }
+
+ var formatParts = format.split ('');
+
+ for (var i = 0, c, il = formatParts.length; i < il; i++) {
+ if (i > 0 && formatParts[i - 1] === '\\') {
+ formatParts[i - 1] = '';
+ continue;
+ }
+
+ c = formatParts[i];
+ formatParts[i] = characters[c] || c;
+ }
+
+ return formatParts.join ('');
+ }
+};