【问题标题】:Using Angular formatDate使用 Angular 格式日期
【发布时间】:2022-01-11 17:35:27
【问题描述】:

我正在尝试将包含“AM”或“PM”的字符串转换为 24 小时格式。我曾尝试使用 formatDate 但无法获得我想要的结果。以下是我尝试从 String 转换为 24 小时格式 String 的值的示例。

String (Before) String (After)
10:00AM 10:00
12:00PM 12:00
02:00PM 14:00
04:00PM 16:00

在这种情况下是否使用 formatDate 是一种推荐的方法,或者如果不是,我可以使用什么其他可能的方法或方式将此字符串转换为上述格式而不会使代码复杂化?

【问题讨论】:

  • 这能回答你的问题吗? convert 12-hour hh:mm AM/PM to 24-hour hh:mm
  • 这是使用 JQuery 但如果我只是使用 Angular 库有没有办法做到这一点?
  • 没有限制可以使用moment
  • @Gurkanİlleez 由于我在这里的前后值都使用数据类型字符串,我该如何利用这里的时刻?
  • @Gurkanİlleez,moment 已停产(可能 day.js 会是更好的选择)。从开发人员自己的那一刻起:“我们希望阻止 Moment 在未来的新项目中使用”考虑使用在你的项目中的时刻?可能有更好的现代替代品。有关更多详细信息和建议,请参阅文档中的项目状态。 momentjs.com/docs/#/-project-status

标签: java angular typescript date datetime


【解决方案1】:

通过使用 javascrpit,您还可以将“AM”或“PM”转换为 24 小时格式:

var time = $("#starttime").val();
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var AMPM = time.match(/\s(.*)$/)[1];
if(AMPM == "PM" && hours<12) hours = hours+12;
if(AMPM == "AM" && hours==12) hours = hours-12;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if(hours<10) sHours = "0" + sHours;
if(minutes<10) sMinutes = "0" + sMinutes;
alert(sHours + ":" + sMinutes);

【讨论】:

  • 这基本上就是 Alex 在上面另一个链接中的建议。请不要直接复制粘贴其他解决方案。
  • 请遵守@Nic 评论
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

您可以使用Momentjs 将“AM”或“PM”转换为 24 小时格式。

console.log(moment("10:00 AM", "h:mm A").format("HH:mm"));
console.log(moment("12:00 PM", "h:mm A").format("HH:mm"));
console.log(moment("2:00 PM", "h:mm A").format("HH:mm"));
console.log(moment("4:00 PM", "h:mm A").format("HH:mm"));
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多