如何以 12 小时 AM/PM 格式显示 JavaScript 日期时间?

How do you display JavaScript datetime in 12 hour AM/PM format?

提问人:bbrame 提问时间:1/17/2012 最后编辑:Sebastian Simonbbrame 更新时间:7/5/2023 访问量:790674

问:

如何以 12 小时格式 (AM/PM) 显示 JavaScript 日期时间对象?

JavaScript DateTime 日期 时间 格式

评论

3赞 Ritesh 7/15/2016
不要浪费你的时间 stackoverflow.com/a/17538193/3541385 它的工作..
2赞 Abandoned Cart 5/6/2019
@Ritesh 测量两次,切割一次。WARNING: toLocaleTimeString() may behave differently based on region / location.
0赞 gilbert-v 5/31/2019
@AbandonedCart这真的是一句话吗?
1赞 Abandoned Cart 5/31/2019
不过,@gilbert-v 这个问题在谷歌上可能更好。One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.
2赞 ashleedawg 3/2/2020
永远不会习惯它试图在 JavaScript 中使用简单的日期是多么复杂。😠

答:

793赞 bbrame 1/17/2012 #1

function formatAMPM(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return strTime;
}

console.log(formatAMPM(new Date));

4赞 Chris Laplante 1/17/2012 #2

查看 Datejs。他们内置的格式化程序可以做到这一点: http://code.google.com/p/datejs/wiki/APIDocumentation#toString

这是一个非常方便的库,特别是如果你打算用日期对象做其他事情。

评论

0赞 RobG 5/10/2017
像“使用库 X”这样的答案是没有帮助的。不过,它们可以作为评论。
2赞 Chris Laplante 5/13/2017
@RobG:正如你所看到的,自从我写这个答案以来已经有一段时间了。我现在意识到了这一点。
49赞 Steve Tauber 7/9/2013 #3

下面是一种使用正则表达式的方法:

console.log(new Date('7/10/2013 20:12:34').toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3"))
console.log(new Date('7/10/2013 01:12:34').toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3"))

这将创建 3 个匹配组:

  • ([\d]+:[\d]{2})- 时:分
  • (:[\d]{2})-秒
  • (.*)- 空间和时间段(Period 是 AM/PM 的正式名称)

然后它显示第 1 组和第 3 组。

警告:toLocaleTimeString() 的行为可能因区域/位置而异。

评论

4赞 uadrive 5/11/2014
人们没有充分使用正则表达式。这对我有用,而无需添加上面的 jquery/microsoftajax 库建议。
0赞 RADXack 5/17/2017
如果它是个位数,那么在小时开始时有一个尾随零的正则表达式是什么。假设在您的第一个晚上 8 点 12 分示例中,它会是晚上 08:12?
1赞 Steve Tauber 5/18/2017
@404是一样的,是我们感兴趣的部分。使用冒号 (:) 作为分隔符,我们看到第一部分是 .加号表示一个或多个。因此,它正在寻找一个或多个数字(包括零。如果你必须保证零在那里,那就是 .现在显示,查找 0 加一个数字,然后是冒号,然后是其余数字。([\d]+:[\d]{2})[\d]+(0[\d]:[\d]{2})
1赞 mujaffars 3/8/2018
console.log(new Date().toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, “$1$3”));获取当前时间
1赞 Craigo 1/21/2021
在澳大利亚行不通。 给出,而正则表达式刚刚给出。@abhay-kumar 的回答奏效了。new Date('7/10/2013 20:12:34').toLocaleTimeString()20:12:3420:12time.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })
12赞 Geo 8/15/2013 #4

en-US 的短正则表达式:

var d = new Date();
d = d.toLocaleTimeString().replace(/:\d+ /, ' '); // current time, e.g. "1:54 PM"

评论

0赞 euther 3/6/2014
这不适用于最新的 Safari 和 Firefox 浏览器,时间仍然使用 24 小时格式
1赞 Geo 3/7/2014
随着时间的流逝,答案会过时。随意编辑和更新!
0赞 sadmicrowave 5/15/2015
这实际上会使字符串看起来像 .要删除,请将您的正则表达式更改为以下内容。虽然,CDT 只是我的时区。如果您有不同的时区,我想您需要更改为该区域代码。1:54 PM CDTCDT.replace(/:\d+ |\CDT/g, ' ')
0赞 RobG 5/10/2017
toLocaleTimeString 的输出依赖于实现,因此并非在所有地方都可靠地采用相同的格式。
3赞 user3059774 12/9/2013 #5

这是另一种简单且非常有效的方法:

        var d = new Date();

        var weekday = new Array(7);
        weekday[0] = "Sunday";
        weekday[1] = "Monday";
        weekday[2] = "Tuesday";
        weekday[3] = "Wednesday";
        weekday[4] = "Thursday";
        weekday[5] = "Friday";
        weekday[6] = "Saturday";

        var month = new Array(11);
        month[0] = "January";
        month[1] = "February";
        month[2] = "March";
        month[3] = "April";
        month[4] = "May";
        month[5] = "June";
        month[6] = "July";
        month[7] = "August";
        month[8] = "September";
        month[9] = "October";
        month[10] = "November";
        month[11] = "December";

        var t = d.toLocaleTimeString().replace(/:\d+ /, ' ');

        document.write(weekday[d.getDay()] + ',' + " " + month[d.getMonth()] + " " + d.getDate() + ',' + " " + d.getFullYear() + '<br>' + d.toLocaleTimeString());

    </script></div><!-- #time -->
48赞 rattray 1/7/2014 #6

如果您不需要打印上午 / 下午,我发现以下内容很好,很简洁:

var now = new Date();
var hours = now.getHours() % 12 || 12;  // 12h instead of 24h, with 12 instead of 0. 

这是基于@bbrame的回答。

评论

4赞 rattray 4/26/2015
午夜@koolinc显示 12。我不确定所需的行为还是什么。
1赞 KooiInc 4/27/2015
我纠正了。在我的国家,使用 24 小时制,所以我对 12 小时制不太熟悉。事实上,午夜是凌晨 12:00。
0赞 Md. A. Apu 3/28/2022
如果只需要 12 小时格式的一小时,这种方法是完美的
-1赞 Zyan Jacob 10/3/2014 #7

或者只需执行以下代码:

    <script>
        time = function() {
            var today = new Date();
            var h = today.getHours();
            var m = today.getMinutes();
            var s = today.getSeconds();
            m = checkTime(m);
            s = checkTime(s);
            document.getElementById('txt_clock').innerHTML = h + ":" + m + ":" + s;     
            var t = setTimeout(function(){time()}, 0);
        }

        time2 = function() {
            var today = new Date();
            var h = today.getHours();
            var m = today.getMinutes();
            var s = today.getSeconds();
            m = checkTime(m);
            s = checkTime(s);
            if (h>12) {
                document.getElementById('txt_clock_stan').innerHTML = h-12 + ":" + m + ":" + s;
            }               
            var t = setTimeout(function(){time2()}, 0);
        }

        time3 = function() {
            var today = new Date();
            var h = today.getHours();
            var m = today.getMinutes();
            var s = today.getSeconds();
            if (h>12) {
                document.getElementById('hour_line').style.width = h-12 + 'em'; 
            }
            document.getElementById('minute_line').style.width = m + 'em';  
            document.getElementById('second_line').style.width = s + 'em';  
            var t = setTimeout(function(){time3()}, 0);
        }

        checkTime = function(i) {
            if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
            return i;
        }           
    </script>

5赞 vamsikrishnamannem 8/17/2015 #8

我想它在这里工作正常。

var date_format = '12'; /* FORMAT CAN BE 12 hour (12) OR 24 hour (24)*/
 
 
var d       = new Date();
var hour    = d.getHours();  /* Returns the hour (from 0-23) */
var minutes     = d.getMinutes();  /* Returns the minutes (from 0-59) */
var result  = hour;
var ext     = '';
 
if(date_format == '12'){
    if(hour > 12){
        ext = 'PM';
        hour = (hour - 12);
        result = hour;

        if(hour < 10){
            result = "0" + hour;
        }else if(hour == 12){
            hour = "00";
            ext = 'AM';
        }
    }
    else if(hour < 12){
        result = ((hour < 10) ? "0" + hour : hour);
        ext = 'AM';
    }else if(hour == 12){
        ext = 'PM';
    }
}
 
if(minutes < 10){
    minutes = "0" + minutes; 
}
 
result = result + ":" + minutes + ' ' + ext; 
 
console.log(result);

和 plunker 示例在这里

14赞 LiranBo 10/24/2015 #9

dateObj.toLocaleString([locales[, options]])

选项 1 - 使用区域设置

var date = new Date();
console.log(date.toLocaleString('en-US'));

选项 2 - 使用选项

var options = { hour12: true };
console.log(date.toLocaleString('en-GB', options));

注意:除 safari atm 外,所有浏览器均支持

430赞 Abhay Kumar 4/24/2016 #10

如果你只想显示时间,那么..

var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', hour12: true })
);  

输出 : 7 AM

如果您也想显示会议记录,那么...

var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })
);

输出 : 7:23 AM

评论

1赞 reutsey 1/10/2017
小时、分钟和上午/下午呢?
0赞 random-forest-cat 2/15/2018
截至 2018 年 2 月,它在铬 Neolisk 上运行良好 - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
0赞 Humble Dolt 11/19/2018
它应该返回 07:23,IMO
2赞 hon2a 1/29/2019
@HumbleDolt 您可能会与 .'numeric''2-digit'
4赞 Omar 11/16/2020
这是最好的答案,但是如何更改 AM/PM 的大写
1赞 sarkiroka 10/15/2016 #11

您可以使用以下简单代码确定 AM 或 PM

var today=new Date();
var noon=new Date(today.getFullYear(),today.getMonth(),today.getDate(),12,0,0);
var ampm = (today.getTime()<noon.getTime())?'am':'pm';
33赞 Edwin Mendez 1/25/2017 #12

据我所知,在没有扩展和复杂编码的情况下实现这一目标的最佳方法是这样的:

     date.toLocaleString([], { hour12: true});

Javascript AM/PM 格式

<!DOCTYPE html>
<html>
<body>
    <p>Click the button to display the date and time as a string.</p>

    <button onclick="myFunction()">Try it</button>
    <button onclick="fullDateTime()">Try it2</button>
    <p id="demo"></p>
    <p id="demo2"></p>
    <script>
        function myFunction() {
            var d = new Date();
            var n = d.toLocaleString([], { hour: '2-digit', minute: '2-digit' });
            document.getElementById("demo").innerHTML = n;
        }
        function fullDateTime() {
            var d = new Date();          
            var n = d.toLocaleString([], { hour12: true});
            document.getElementById("demo2").innerHTML = n;
        }
    </script>
</body>
</html>

我发现这个问题。

如何在不显示秒的情况下使用 .toLocaleTimeString()?

评论

0赞 Raul A. 2/21/2021
这是最简单的答案。投票,因为是 javascript 原生解决方案。谢谢
0赞 Qumber 6/7/2021
这是一个很好的本机解决方案。
19赞 Vijay Maheriya 3/15/2017 #13

我的建议是使用 moment js 进行日期和时间操作。

https://momentjs.com/docs/#/displaying/format/

console.log(moment().format('hh:mm a'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

-1赞 johnchinjew 9/22/2017 #14

一个简短而甜蜜的实现:

// returns date object in 12hr (AM/PM) format
var formatAMPM = function formatAMPM(d) {
    var h = d.getHours();
    return (h % 12 || 12)
        + ':' + d.getMinutes().toString().padStart(2, '0')
        + ' ' + (h < 12 ? 'A' : 'P') + 'M';
};
0赞 Sujith S 10/13/2017 #15

var d = new Date();
var hours = d.getHours() % 12;
  hours = hours ? hours : 12;
    var test = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][(d.getMonth() + 1)] + " " + 
    ("00" + d.getDate()).slice(-2) + " " + 
    d.getFullYear() + " " + 
    ("00" + hours).slice(-2) + ":" + 
    ("00" + d.getMinutes()).slice(-2) + ":" + 
    ("00" + d.getSeconds()).slice(-2) + ' ' + (d.getHours() >= 12 ? 'PM' : 'AM'); 
    
document.getElementById("demo").innerHTML = test;
<p id="demo" ></p>

0赞 user8588978 2/2/2018 #16
<h1 id="clock_display" class="text-center" style="font-size:40px; color:#ffffff">[CLOCK TIME DISPLAYS HERE]</h1>



<script>
            var AM_or_PM = "AM";

            function startTime(){

                var today = new Date();
                var h = today.getHours();
                var m = today.getMinutes();
                var s = today.getSeconds();

                h = twelve_hour_time(h);
                m = checkTime(m);
                s = checkTime(s);



                document.getElementById('clock_display').innerHTML =
                    h + ":" + m + ":" + s +" "+AM_or_PM;
                var t = setTimeout(startTime, 1000);

            }

            function checkTime(i){

                if(i < 10){
                    i = "0" + i;// add zero in front of numbers < 10
                }
                return i;
            }

            // CONVERT TO 12 HOUR TIME. SET AM OR PM
            function twelve_hour_time(h){

                if(h > 12){
                    h = h - 12;
                    AM_or_PM = " PM";
                }
                return h;

            }

            startTime();

        </script>
4赞 Pankaj Upadhyay 5/12/2018 #17
<script>
var todayDate = new Date();
var getTodayDate = todayDate.getDate();
var getTodayMonth =  todayDate.getMonth()+1;
var getTodayFullYear = todayDate.getFullYear();
var getCurrentHours = todayDate.getHours();
var getCurrentMinutes = todayDate.getMinutes();
var getCurrentAmPm = getCurrentHours >= 12 ? 'PM' : 'AM';
getCurrentHours = getCurrentHours % 12;
getCurrentHours = getCurrentHours ? getCurrentHours : 12; 
getCurrentMinutes = getCurrentMinutes < 10 ? '0'+getCurrentMinutes : getCurrentMinutes;
var getCurrentDateTime = getTodayDate + '-' + getTodayMonth + '-' + getTodayFullYear + ' ' + getCurrentHours + ':' + getCurrentMinutes + ' ' + getCurrentAmPm;
alert(getCurrentDateTime);
</script>

评论

2赞 Lynnell Neri 6/21/2018
获得 12 小时的模块非常好!这可以防止在凌晨 12 点或中午 12 点时归零
11赞 Krishnamoorthy Acharya 6/7/2018 #18

请在下面找到解决方案

var d = new Date();
var amOrPm = (d.getHours() < 12) ? "AM" : "PM";
var hour = (d.getHours() < 12) ? d.getHours() : d.getHours() - 12;
return   d.getDate() + ' / ' + d.getMonth() + ' / ' + d.getFullYear() + ' ' + hour + ':' + d.getMinutes() + ' ' + amOrPm;

评论

2赞 Ryan 4/18/2019
对于小时计算,应小于或等于,否则中午显示为 0。所以:var hour = (d.getHours() <= 12)。午夜仍然有问题,所以你必须检查是否为零,然后也设置为12。
22赞 Ankur Mahajan 2/2/2019 #19

为此使用 Moment.js

使用 moment.js 时,请在 JavaScript 中使用以下代码

H, HH       24 hour time
h, or hh    12 hour time (use in conjunction with a or A)

该方法以特定格式返回日期。format()

moment(new Date()).format("YYYY-MM-DD HH:mm"); // 24H clock
moment(new Date()).format("YYYY-MM-DD hh:mm A"); // 12H clock (AM/PM)
moment(new Date()).format("YYYY-MM-DD hh:mm a"); // 12H clock (am/pm)

评论

0赞 Banjali 4/28/2022
这种 12H 格式挽救了我的一天,谢谢。
0赞 Prathamesh More 6/10/2019 #20

这是我的解决方案

function getTime() {
var systemDate = new Date();
var hours = systemDate.getHours();
var minutes = systemDate.getMinutes();
var strampm;
if (hours >= 12) {
    strampm= "PM";
} else {
    strampm= "AM";
}
hours = hours % 12;
if (hours == 0) {
    hours = 12;
}
_hours = checkTimeAddZero(hours);
_minutes = checkTimeAddZero(minutes);
console.log(_hours + ":" + _minutes + " " + strampm);
}

function checkTimeAddZero(i) {
if (i < 10) {
    i = "0" + i
}
return i;
}
1赞 Md. Juyel Rana 9/11/2019 #21

试试这个

      var date = new Date();
      var hours = date.getHours();
      var minutes = date.getMinutes();
      var seconds = date.getSeconds();
      var ampm = hours >= 12 ? "pm" : "am";

评论

0赞 Utsav T 4/14/2020
这是不正确的。小时数可能大于 12 小时。
0赞 Md. Juyel Rana 4/15/2020
中午 12:00 时,var ampm 将为“pm”。因此,中午 12:00 到晚上 11:00 将是存储“pm”值的 12 到 23 点,而对于其他人,var ampm 将存储“am”值。希望你能理解。
0赞 Utsav T 4/15/2020
嗨,朱耶尔!实际上,当小时数大于 12 小时时,该值将为 PM。但问题是“如何以 12 小时的 AM/PM 格式显示 JavaScript 日期时间?”——您需要帮助 OP 将整个时间转换为 AM/PM 格式。例如,14:30 将是下午 2:30。
0赞 Vik2696 10/1/2019 #22
function getDateTime() {
  var now = new Date();
  var year = now.getFullYear();
  var month = now.getMonth() + 1;
  var day = now.getDate();

  if (month.toString().length == 1) {
    month = '0' + month;
  }
  if (day.toString().length == 1) {
    day = '0' + day;
  }

  var hours = now.getHours();
  var minutes = now.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12;
  minutes = minutes < 10 ? '0' + minutes : minutes;
  var timewithampm = hours + ':' + minutes + ' ' + ampm;

  var dateTime = monthNames[parseInt(month) - 1] + ' ' + day + ' ' + year + ' ' + timewithampm;
  return dateTime;
}
35赞 mtm 12/18/2019 #23

现代浏览器中,使用并强制使用 12 小时格式,并带有以下选项:Intl.DateTimeFormat

    let now = new Date();

    new Intl.DateTimeFormat('default',
        {
            hour12: true,
            hour: 'numeric',
            minute: 'numeric'
        }).format(now);

    // 6:30 AM

如果您添加更多选项,using 将遵循浏览器的默认区域设置,但仍将输出 12 小时格式。default

评论

0赞 Scot Nery 4/3/2020
要使用它,请将新字符串分配给变量,例如:let result = new Intl.DateTi...。alert(结果);
0赞 Dem Pilafian 6/18/2021
还可以:const time = new Date().toLocaleString([], { hour: 'numeric', minute: 'numeric' }); //"6:30 AM"
7赞 Irshad Babar 8/14/2020 #24

它将返回以下格式,例如

09:56 AM

如果小于 10,则在开始时间中也附加零

这里它使用 ES6 语法

const getTimeAMPMFormat = (date) => {
  let hours = date.getHours();
  let minutes = date.getMinutes();
  const ampm = hours >= 12 ? 'PM' : 'AM';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  hours = hours < 10 ? '0' + hours : hours;
  // appending zero in the start if hours less than 10
  minutes = minutes < 10 ? '0' + minutes : minutes;
  return hours + ':' + minutes + ' ' + ampm;
};
console.log(getTimeAMPMFormat(new Date)); // 09:59 AM

1赞 antelove 10/14/2020 #25

function formatTime( d = new Date(), ampm = true ) 
{
    var hour = d.getHours();
    
    if ( ampm )
    {
        var a = ( hour >= 12 ) ? 'PM' : 'AM';
        hour = hour % 12;
        hour = hour ? hour : 12; // the hour '0' should be '12'  
    }

    var hour    = checkDigit(hour);  
    var minute  = checkDigit(d.getMinutes());
    var second  = checkDigit(d.getSeconds());
  
    // https://stackoverflow.com/questions/1408289/how-can-i-do-string-interpolation-in-javascript
    return ( ampm ) ? `${hour}:${minute}:${second} ${a}` : `${hour}:${minute}:${second}`;
}

function checkDigit(t)
{
  return ( t < 10 ) ? `0${t}` : t;
}

document.querySelector("#time1").innerHTML = formatTime();
document.querySelector("#time2").innerHTML = formatTime( new Date(), false );
<p>ampm true:   <span id="time1"></span> (default)</p>
<p>ampm false:  <span id="time2"></span></p>

17赞 OnlyZero 11/18/2020 #26

更新了更多压缩

const formatAMPM = (date) => {
  let hours = date.getHours();
  let minutes = date.getMinutes();    
  const ampm = hours >= 12 ? 'pm' : 'am';

  hours %= 12;
  hours = hours || 12;    
  minutes = minutes < 10 ? `0${minutes}` : minutes;

  const strTime = `${hours}:${minutes} ${ampm}`;

  return strTime;
};

console.log(formatAMPM(new Date()));

评论

0赞 Muhammad Umar 10/25/2023
它工作正常谢谢
0赞 Mitesh K 12/7/2021 #27
   const formatAMPM = (date) => {
    try {
      let time = date.split(" ");
      let hours = time[4].split(":")[0];
      let minutes = time[4].split(":")[1];
      hours = hours || 12;
      const ampm = hours >= 12 ? " PM" : " AM";
      minutes = minutes < 10 ? `${minutes}` : minutes;
      hours %= 12;
      const strTime = `${hours}:${minutes} ${ampm}`;
      return strTime;
    } catch (e) {
      return "";
    }
  };

const startTime = "2021-12-07T17:00:00.073Z"
formatAMPM(new Date(startTime).toUTCString())
0赞 Abhishek 5/24/2022 #28

这是您可以使用三元运算符实现此目的的最简单方法,或者您也可以使用 if else 代替!

const d = new Date();
let hrs = d.getHours();
let m = d.getMinutes();
// Condition to add zero before minute
let min = m < 10 ? `0${m}` : m;
const currTime = hrs >= 12 ? `${hrs - 12}:${min} pm` : `${hrs}:${min} am`;
console.log(currTime);

评论

0赞 Jivan 8/19/2022
这将中午 12 点作为下午 0:00。
5赞 carloswm85 5/29/2022 #29

希望这个答案比其他答案更具可读性(尤其是对于新来者)。

这是我在我的一些网站中实施的解决方案,用于通知上次修改网站代码的时间。它通过 的参数实现 AM/PM 时间(参见相关的 Mozilla 文档)。optionsdate.toLocaleDateString

// Last time page code was updated/changed
const options = {
    year: "numeric",
    month: "long",
    weekday: "long",
    day: "numeric",
    hour: "numeric",
    minute: "numeric",
    second: "numeric",
    hour12: true // This is the line of code we care about here
    /*
        false: displays 24hs format for time
        true: displays 12, AM and PM format
    */
};

let last = document.lastModified;
let date = new Date(last);
let local = date.toLocaleDateString("en-US", options);
let fullDate = `${local}`;
document.getElementById("updated").textContent = fullDate;

哪个输出的格式是:

Saturday, May 28, 2022, 8:38:50 PM

然后,此输出将显示在以下 HTML 代码中:

<p>Last update: <span id="updated">_update_date_goes_here</span></p>

注意:在此用例中,有一些奇怪的行为,具体取决于它是在本地运行还是在外部服务器上运行(请参阅此 Stack Overflow 问题)。尽管当我在我的 GitHub 页面中运行它时它可以正常工作(您应该在页脚的站点中看到它的实际运行)。document.lastModified

3赞 salman_sali 7/17/2022 #30

如果你有时间作为字符串,这样, 然后,您可以使用以下代码来获取 AM PM。var myTime = "15:30"

var hour = parseInt(myTime.split(":")[0]) % 12;
var timeInAmPm = (hour == 0 ? "12": hour ) + ":" + myTime.split(":")[1] + " " + (parseInt(parseInt(myTime.split(":")[0]) / 12) < 1 ? "am" : "pm");

评论

0赞 derar sattouf 11/22/2022
正是我需要的!
0赞 salman_sali 11/22/2022
@derarsattouf 过去的代码在 00:00 和 24:00 时有问题,我已经修复了这个问题。如果您使用过此代码,请使用上述代码更新您的代码
2赞 Muhammad Zakaria 11/6/2022 #31

function startTime() {
  const today = new Date();
  let h = today.getHours();
  let m = today.getMinutes();
  let s = today.getSeconds();
  var meridian = h >= 12 ? "PM" : "AM";
  h = h % 12;
  h = h ? h : 12;
  m = m < 10 ? "0" + m : m;
  s = s < 10 ? "0" + s : s;
  var strTime = h + ":" + m + ":" + s + " " + meridian;
  document.getElementById('time').innerText = strTime;
  setTimeout(startTime, 1000);
}

startTime();
<h1 id='time'></h1>

2赞 pathikrit 3/15/2023 #32

如果有人正在寻找 1 行:

const formatAMPM = date => `${(date.getHours() % 12) || 12}:${date.getMinutes().toString().padStart(2, '0')} ${date.getHours() < 12 ? 'AM' : 'PM'}`    

或更具可读性的 3 行(或者如果您的浏览器中没有):padStart

const formatAMPM = (date) => {
  let minutes = date.getMinutes()
  minutes = minutes < 10 ? '0' + minutes : minutes
  return `${(date.getHours() % 12) || 12}:${minutes} ${date.getHours() < 12 ? 'AM' : 'PM'}`
}
0赞 Mizanur Rahman 7/5/2023 #33

{new Date(progress.position * 1000).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }).substring(0,5)}