我有一个名为regdate的字符串,值为16-4-2017 00:00:00
现在我已经尝试了几个小时将此字符串转换为这种格式:4/16/2017 12:00:00 AM
我知道这个问题可能会重复,但我已经在互联网上看了几个小时了。
答案 0 :(得分:1)
方法1 - 使用正则表达式解析,使用toLocaleString格式化输出
在此代码段中,string.match
方法用于解析日期字符串。然后使用日期部分创建日期对象,toLocaleString("en-US")
用于获取美国日期格式:
function convertDate(regdate) {
var m = regdate.match(/(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)/);
var date = new Date(m[3], m[2] - 1, m[1], m[4], m[5], m[6]);
return date.toLocaleString("en-US");
}
Date: <input id="txtDate" type="text" value="16-4-2017 00:00:00" />
<button onclick="console.log(convertDate(document.getElementById('txtDate').value))">Convert</button>
方法2 - 解析并替换为正则表达式
在第二个代码片段中,string.replace
方法用于修改日期字符串:正则表达式解析原始日期字符串,替换函数重新组合各个部分:
function convertDate(regdate) {
return regdate.replace(/(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)/,
function(m, v1, v2, v3, v4, v5, v6) {
var hour24 = parseInt(v4, 10);
var hour12 = hour24 % 12 || 12;
var ampm = hour24 < 12 ? "AM" : "PM";
return `${v2}/${v1}/${v3} ${hour12}:${v5}:${v6} ${ampm}`;
});
}
Date: <input id="txtDate" type="text" value="16-4-2017 00:00:00" />
<button onclick="console.log(convertDate(document.getElementById('txtDate').value))">Convert</button>
方法3 - 使用datejs库解析,使用toLocaleString格式化输出
如果您不介意使用外部库,可以将字符串转换为datejs的日期,并使用date.toLocaleString("en-US")
格式化输出:
var date = Date.parse("16-4-2017 00:00:00");
console.log(date.toLocaleString("en-US"));
.as-console-wrapper {
max-height: 100% !important;
top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
答案 1 :(得分:1)
现在结束!!
var time = "16-4-2017 13:00:00";
var date = time.split(' ')[0].split('-'); //now date is ['16', '4', '2017'];
time = time.split(' ')[1].split(':'); //now time is ['13', 00', 00']
var dateFull = new Date(date[2], date[1], date[0], time[0], time[1], time[2]);
var dateString = (dateFull.getMonth()) + dateFull.toString().substring(0, dateFull.toString().indexOf('G')).substring(7).replace(' ', '/').replace(' ', '/');
if (dateFull.getHours() > 12) dateString = dateString.replace(dateFull.getHours(), dateFull.getHours() - 12) + 'PM';
else if (dateFull.getHours() == 12) dateString += 'PM';
else dateString += 'AM';
console.log(dateString);
&#13;
答案 2 :(得分:0)
var q = new Date(Date.parse('2017-4-16 00:00:00'));
console.log(q.toLocaleDateString()+q.toLocaleTimeString());
&#13;
这应该有所帮助。但请检查日期的输入格式。您发布的格式始终会为您提供NaN
答案 3 :(得分:0)
只是另一个例子,但更简洁一点:
var str1 = ["hi","yoyo","damn"]
var str2 = ["yoyo","wow","daui"]
var str3 = ["damn","right","yoyo"]
但是,使用仅数字格式化美国格式的字符串非常不明确。最好使用明确的格式,例如使用月份名称而不是数字,例如2017年4月16日上午12:00:00
答案 4 :(得分:0)
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="123" roles="tomcat"/>
<user username="both" password="123" roles="tomcat,role1"/>
<user username="role1" password="123" roles="role1"/>
<user username="souvik" password="xyz123" roles="manager-gui,manager-script,manager-jmx,manager-status" />
</tomcat-users>