]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Add support for 12-hour custom date formats
authorSteve Switzer <steve@switzerny.org>
Fri, 12 May 2023 15:05:19 +0000 (11:05 -0400)
committerFlole998 <Flole998@users.noreply.github.com>
Mon, 19 Feb 2024 18:07:01 +0000 (19:07 +0100)
src/webui/static/app/tvheadend.js

index 192d15fd06e838ea66d25338ade6d61f04e8d3b0..8d5ec8f5fc485f4834a9da6459bce0f34c2b6d4c 100644 (file)
@@ -1387,38 +1387,48 @@ tvheadend.toLocaleFormat = function()
        return tvh_locale_lang.replace('_','-');
 };
 
-tvheadend.toCustomDate = function(date, format) //author: meizz, improvements by pablozg
-{
-    if(/([%][MmsSyYdhq]+)/.test(format)){
-        var o = {
-            "\%M+" : date.getMonth()+1, //month
-            "\%d+" : date.getDate(),    //day
-            "\%h+" : date.getHours(),   //hour
-            "\%m+" : date.getMinutes(), //minute
-            "\%s+" : date.getSeconds(), //second
-            "\%q+" : Math.floor((date.getMonth()+3)/3),  //quarter
-            "\%S" : date.getMilliseconds() //millisecond
-        }
-
-        if(/(\%[yY]+)/.test(format)) format=format.replace(RegExp.$1, (date.getFullYear()+"").substr(5 - RegExp.$1.length));
-
-        if(/(\%MMMM)/.test(format)) format=format.replace(RegExp.$1, (date.toLocaleDateString(tvheadend.toLocaleFormat(), {month: 'long'})));
-
-        if(/(\%MMM)/.test(format)) format=format.replace(RegExp.$1, (date.toLocaleDateString(tvheadend.toLocaleFormat(), {month: 'short'})));
+tvheadend.toCustomDate = function(date, format) {
+    if (/(%[MmsSyYdhHIpPq]+)/.test(format)) {
+        const o = {
+            "%M+": date.getMonth() + 1,
+            "%d+": date.getDate(),
+            "%h+": date.getHours(),
+            "%H+": date.getHours(),
+            "%I+": date.getHours() % 12 || 12,
+            "%p": date.getHours() >= 12 ? "PM" : "AM",
+            "%P": date.getHours() >= 12 ? "pm" : "am",
+            "%m+": date.getMinutes(),
+            "%s+": date.getSeconds(),
+            "%q+": Math.floor((date.getMonth() + 3) / 3),
+            "%S": date.getMilliseconds()
+        };
 
-        if(/(\%dddd)/.test(format)) format=format.replace(RegExp.$1, (date.toLocaleDateString(tvheadend.toLocaleFormat(), {weekday: 'long'})));
+        format = format.replace(/(%[yY]+)/, (date.getFullYear() + "").substr(5 - RegExp.$1.length))
+                       .replace(/(%MMMM)/, date.toLocaleDateString(toLocaleFormat(), { month: 'long' }))
+                       .replace(/(%MMM)/, date.toLocaleDateString(toLocaleFormat(), { month: 'short' }))
+                       .replace(/(%dddd)/, date.toLocaleDateString(toLocaleFormat(), { weekday: 'long' }))
+                       .replace(/(%ddd)/, date.toLocaleDateString(toLocaleFormat(), { weekday: 'short' }));
 
-        if(/(\%ddd)/.test(format)) format=format.replace(RegExp.$1, (date.toLocaleDateString(tvheadend.toLocaleFormat(), {weekday: 'short'})));
+        for (const k in o) {
+            if (new RegExp("(" + k + ")").test(format)) {
+                format = format.replace(RegExp.$1, RegExp.$1.length == 2 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
+            }
+        }
 
-        for(var k in o)
-            if(new RegExp("("+ k +")").test(format))
-                    format = format.replace(RegExp.$1, RegExp.$1.length==2 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
         return format;
-    }else{
-        var options = {weekday: 'short', day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false};
-        return date.toLocaleString(tvheadend.toLocaleFormat(), options);
+    } else {
+        const options = {
+            month: '2-digit',
+            day: '2-digit',
+            year: 'numeric',
+            hour: '2-digit',
+            minute: '2-digit',
+            second: '2-digit',
+            hour12: false
+        };
+        return date.toLocaleString(toLocaleFormat(), options);
     }
-}
+};
 
 /**
  *