summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/datetime/idate.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/datetime/idate.js')
-rw-r--r--node_modules/locutus/php/datetime/idate.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/node_modules/locutus/php/datetime/idate.js b/node_modules/locutus/php/datetime/idate.js
new file mode 100644
index 0000000..438e2c0
--- /dev/null
+++ b/node_modules/locutus/php/datetime/idate.js
@@ -0,0 +1,71 @@
+'use strict';
+
+module.exports = function idate(format, timestamp) {
+ // discuss at: http://locutus.io/php/idate/
+ // original by: Brett Zamir (http://brett-zamir.me)
+ // original by: date
+ // original by: gettimeofday
+ // input by: Alex
+ // bugfixed by: Brett Zamir (http://brett-zamir.me)
+ // improved by: Theriault (https://github.com/Theriault)
+ // example 1: idate('y', 1255633200)
+ // returns 1: 9
+
+ if (format === undefined) {
+ throw new Error('idate() expects at least 1 parameter, 0 given');
+ }
+ if (!format.length || format.length > 1) {
+ throw new Error('idate format is one char');
+ }
+
+ // @todo: Need to allow date_default_timezone_set() (check for $locutus.default_timezone and use)
+ var _date = typeof timestamp === 'undefined' ? new Date() : timestamp instanceof Date ? new Date(timestamp) : new Date(timestamp * 1000);
+ var a;
+
+ switch (format) {
+ case 'B':
+ return Math.floor((_date.getUTCHours() * 36e2 + _date.getUTCMinutes() * 60 + _date.getUTCSeconds() + 36e2) / 86.4) % 1e3;
+ case 'd':
+ return _date.getDate();
+ case 'h':
+ return _date.getHours() % 12 || 12;
+ case 'H':
+ return _date.getHours();
+ case 'i':
+ return _date.getMinutes();
+ case 'I':
+ // capital 'i'
+ // Logic original by getimeofday().
+ // Compares Jan 1 minus Jan 1 UTC to Jul 1 minus Jul 1 UTC.
+ // If they are not equal, then DST is observed.
+ a = _date.getFullYear();
+ return 0 + (new Date(a, 0) - Date.UTC(a, 0) !== new Date(a, 6) - Date.UTC(a, 6));
+ case 'L':
+ a = _date.getFullYear();
+ return !(a & 3) && (a % 1e2 || !(a % 4e2)) ? 1 : 0;
+ case 'm':
+ return _date.getMonth() + 1;
+ case 's':
+ return _date.getSeconds();
+ case 't':
+ return new Date(_date.getFullYear(), _date.getMonth() + 1, 0).getDate();
+ case 'U':
+ return Math.round(_date.getTime() / 1000);
+ case 'w':
+ return _date.getDay();
+ case 'W':
+ a = new Date(_date.getFullYear(), _date.getMonth(), _date.getDate() - (_date.getDay() || 7) + 3);
+ return 1 + Math.round((a - new Date(a.getFullYear(), 0, 4)) / 864e5 / 7);
+ case 'y':
+ return parseInt((_date.getFullYear() + '').slice(2), 10); // This function returns an integer, unlike _date()
+ case 'Y':
+ return _date.getFullYear();
+ case 'z':
+ return Math.floor((_date - new Date(_date.getFullYear(), 0, 1)) / 864e5);
+ case 'Z':
+ return -_date.getTimezoneOffset() * 60;
+ default:
+ throw new Error('Unrecognized _date format token');
+ }
+};
+//# sourceMappingURL=idate.js.map \ No newline at end of file