bbr*_*ame 268 javascript format time datetime date
如何以12小时格式(AM/PM)显示JavaScript日期时间对象?
bbr*_*ame 486
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));Run Code Online (Sandbox Code Playgroud)
Abh*_*mar 169
如果你只是想显示小时,那么..
var time = new Date();
console.log(
time.toLocaleString('en-US', { hour: 'numeric', hour12: true })
); Run Code Online (Sandbox Code Playgroud)
输出:上午7点
如果你想显示会议记录,那么......
var time = new Date();
console.log(
time.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })
);Run Code Online (Sandbox Code Playgroud)
输出:上午7:23
Mik*_*sen 52
<html>
<script type="text/javascript" src="http://www.datejs.com/build/date.js"></script>
<script>
(function ()
{
document.write(new Date().toString("hh:mm tt"));
})();
</script>
</html>Run Code Online (Sandbox Code Playgroud)
Ste*_*ber 41
这是一种使用正则表达式的方法:
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"))Run Code Online (Sandbox Code Playgroud)
这将创建3个匹配组:
([\d]+:[\d]{2}) - 小时:分钟(:[\d]{2}) - 秒(.*) - 空间和期间(期间是AM/PM的正式名称)然后它显示第1组和第3组.
警告:toLocaleTimeString()可能会根据区域/位置而有所不同.
rat*_*ray 33
如果你不需要打印am/pm,我发现以下简洁明了:
var now = new Date();
var hours = now.getHours() % 12 || 12; // 12h instead of 24h, with 12 instead of 0.
Run Code Online (Sandbox Code Playgroud)
这是基于@bbrame的答案.
小智 20
在现代浏览器中,使用Intl.DateTimeFormat并强制使用12 小时格式的选项:
let now = new Date();
new Intl.DateTimeFormat('default',
{
hour12: true,
hour: 'numeric',
minute: 'numeric'
}).format(now);
// 6:30 AM
Run Code Online (Sandbox Code Playgroud)
default如果您添加更多选项,使用将遵循浏览器的默认语言环境,但仍会输出 12 小时格式。
小智 16
据我所知,没有扩展和复杂编码实现这一目标的最佳方法是这样的:
date.toLocaleString([], { hour12: true});
Run Code Online (Sandbox Code Playgroud)
<!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>Run Code Online (Sandbox Code Playgroud)
我发现这个检查了这个问题.
如何在不显示秒的情况下使用.toLocaleTimeString()?
Ank*_*jan 15
为此使用Moment.js
使用 moment.js 时在 JavaScript 中使用以下代码
H, HH 24 hour time
h, or hh 12 hour time (use in conjunction with a or A)
Run Code Online (Sandbox Code Playgroud)
该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)
Run Code Online (Sandbox Code Playgroud)
Vij*_*iya 13
我的建议是使用时刻js进行日期和时间操作.
https://momentjs.com/docs/#/displaying/format/
console.log(moment().format('hh:mm a'));Run Code Online (Sandbox Code Playgroud)
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>Run Code Online (Sandbox Code Playgroud)
Lir*_*nBo 11
使用 dateObj.toLocaleString([locales[, options]])
选项1 - 使用区域设置
var date = new Date();
console.log(date.toLocaleString('en-US'));
Run Code Online (Sandbox Code Playgroud)
选项2 - 使用选项
var options = { hour12: true };
console.log(date.toLocaleString('en-GB', options));
Run Code Online (Sandbox Code Playgroud)
注意:所有浏览器都支持safari atm
Kri*_*rya 10
请在下面找到解决方案
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;
Run Code Online (Sandbox Code Playgroud)
en-US的简短RegExp:
var d = new Date();
d = d.toLocaleTimeString().replace(/:\d+ /, ' '); // current time, e.g. "1:54 PM"
Run Code Online (Sandbox Code Playgroud)
小智 8
更新更多压缩
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()));
Run Code Online (Sandbox Code Playgroud)
查看Datejs。他们内置的格式化程序可以做到这一点:http : //code.google.com/p/datejs/wiki/APIDocumentation#toString
这是一个非常方便的库,尤其是如果您打算对日期对象进行其他操作。
我发现它在这里工作正常。
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);
Run Code Online (Sandbox Code Playgroud)
和 plunker 的例子在这里
希望这个答案比其他答案更具可读性(特别是对于新来者)。
这是我在一些网站中实现的解决方案,用于通知上次修改网站代码的时间。options它通过参数实现AM/PM时间date.toLocaleDateString(参见相关Mozilla文档)。
// 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;
Run Code Online (Sandbox Code Playgroud)
其输出格式为:
Saturday, May 28, 2022, 8:38:50 PM
Run Code Online (Sandbox Code Playgroud)
然后,此输出显示在以下 HTML 代码中:
<p>Last update: <span id="updated">_update_date_goes_here</span></p>
Run Code Online (Sandbox Code Playgroud)
注意:在这个用例中,document.lastModified有一些奇怪的行为,具体取决于它是在本地运行还是在外部服务器上运行(请参阅此 Stack Overflow 问题)。尽管当我在 GitHub 页面中运行它时它可以正常工作(您应该在网站的页脚处看到它的运行情况)。
| 归档时间: |
|
| 查看次数: |
380148 次 |
| 最近记录: |