如何以 12 小时格式 (AM/PM) 显示 JavaScript 日期时间对象?
如何以 12 小时 AM/PM 格式显示 JavaScript 日期时间?
IT技术
javascript
datetime
date
time
format
                    2021-01-24 14:55:19
                
                    
                
            
        6个回答
            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));
如果您只想显示小时,那么..
var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', hour12: true })
);  
输出:早上 7 点
如果您还想显示会议记录,那么...
var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })
);
输出:上午 7:23
这是使用正则表达式的一种方法:
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})- 秒(.*)- 空格和句号(句号是 AM/PM 的正式名称)
然后显示第 1 组和第 3 组。
警告:toLocaleTimeString() 的行为可能因地区/位置而异。
如果您不需要打印 am/pm,我发现以下内容简洁明了:
var now = new Date();
var hours = now.getHours() % 12 || 12;  // 12h instead of 24h, with 12 instead of 0. 
这是基于@bbrame 的回答。
据我所知,在没有扩展和复杂编码的情况下实现这一目标的最佳方法是这样的:
     date.toLocaleString([], { hour12: true});
<!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>
我发现这个检查了这个问题。
其它你可能感兴趣的问题