5 [% Asset.js("lib/dayjs/dayjs.min.js") | $raw %]
6 [% Asset.js("lib/dayjs/plugin/utc.js") | $raw %]
7 [% Asset.js("lib/dayjs/plugin/timezone.js") | $raw %]
8 [% Asset.js("lib/dayjs/plugin/customParseFormat.js") | $raw %]
10 dayjs.extend(window.dayjs_plugin_utc);
11 dayjs.extend(window.dayjs_plugin_timezone);
12 dayjs.extend(window.dayjs_plugin_customParseFormat);
15 <!-- js-date-format.inc -->
18 var def_date_format = '[% Koha.Preference('dateformat') | html %]';
19 var def_time_format = '[% Koha.Preference('TimeFormat') | html %]';
20 var def_tz = '[% KohaDates.tz | html %]';
22 var get_date_pattern = function(format) {
23 var date_pattern = 'YYYY-MM-DD';
24 if(format == 'us') date_pattern = 'MM/DD/YYYY';
25 if(format == 'metric') date_pattern = 'DD/MM/YYYY';
26 if(format == 'dmydot') date_pattern = 'DD.MM.YYYY';
30 var get_time_pattern = function(format) {
31 var time_pattern = 'HH:mm';
32 if(format == '12hr') time_pattern = 'hh:mm a';
37 * A JS equivilent of the KohaDates TT Plugin. Passed an rfc3339 formatted date string,
38 * or JS Date, the function will return a date string formatted as per the koha instance config.
39 * Optionally accepts a dateformat parameter to allow override of the configured output format
40 * as well as a 'withtime' boolean denoting whether to include time or not in the output string.
42 window.$date = function(value, options) {
44 var tz = (options&&options.tz)||def_tz;
46 if ( ! value.match(/^\d{4}-\d{2}-\d{2}$/ ) ) {
50 var dateformat = (options&&options.dateformat)||def_date_format;
51 var withtime = (options&&options.withtime)||false;
53 if(dateformat=='rfc3339' && withtime) return m.format();
55 var timeformat = (options&&options.timeformat)||def_time_format;
56 var date_pattern = get_date_pattern(dateformat);
57 var time_pattern = !withtime?'':' '+get_time_pattern(timeformat);
59 return m.format(date_pattern+time_pattern);
62 window.$datetime = function(value, options) {
63 options = options||{};
64 options.withtime = true;
65 return $date(value, options);
68 window.$time = function(value, options) {
70 var tz = (options&&options.tz)||def_tz;
74 var dateformat = (options&&options.dateformat);
75 var timeformat = (dateformat=='rfc3339'&&'24hr')||(options&&options.timeformat)||def_time_format;
77 return m.format(get_time_pattern(timeformat)+(dateformat=='rfc3339'?':ss'+(!m.isUTC()?'Z':''):''))+(dateformat=='rfc3339' && m.isUTC()?'Z':'');
80 window.$date_to_rfc3339 = function(value, options) {
81 var dateformat = (options&&options.dateformat)||def_date_format;
82 let m = dayjs(value, get_date_pattern(dateformat));
83 return m.format("YYYY-MM-DD");
88 <!-- / js-date-format.inc -->