我有2个关于约会的问题。
第一个是如何从Javascript中的日期获取“上午/下午”?
第二个问题是说我有这个代码
var convertedStartDate = new Date(dueDate);
var month = convertedStartDate.getMonth() + 1;
var day = convertedStartDate.getDate();
var year = convertedStartDate.getFullYear();
var shortDueDate = month + "/" + day + "/" + year;
现在你可以看到我想要这种格式mm / dd / yyyy
所以我想知道dueDate是否是2010年9月9日(mm / dd / yyyy),但是这个人输入的是dd / mm / yyyy(日期的其他一些格式版本)。
会
月= 1 天= 9 年= 2010
或者我必须以某种方式告诉它总是转换成mm / dd / yyyy?或者它是自己的格式,以便它总能得到正确的顺序?也就是说,他们把日期放在哪个顺序并不重要,总是得到9日。
答案 0 :(得分:0)
在这里,尝试一下:
now = new Date();
hour = now.getHours();
var tag = "";
if (hour >= 12) {
tag = "pm";
} else {
tag = "am";
}
至于你问题的第二部分,我只是将表单中的那些部分分开来,否则就没有办法了。你只需要在表单中写一些提示。
答案 1 :(得分:0)
您需要始终将用户输入的内容转换/转换为Javascript Date对象。请记住 - Javascript是客户端计算机的本地人...美国人的格式设置与英国或中国的人不同。
为了简单起见......在输入文本框附近建议或提示所需的输入格式。然后,使用Regex验证该格式。这样你几乎可以保证获得所需的日期......好吧......除非用户禁用了Javascript。大声笑......在这种情况下......你需要在服务器端进行转换(无论如何你都应该这样做)。
答案 2 :(得分:0)
为了获得AM / PM的一段时间,我发现了很久以前写的一些旧代码。请参阅(删除上午/下午),您可以使用子字符串替换它。
function ValidateAdvancedTime(time, formatType){
time = time.replace(".", ":");
var newTime = time.substring(0, (time.indexOf(":") + 3)); // Strip out the seconds
var status = ValidateTime(newTime, formatType);
if(status == false)
return false;
var seconds = time.substring(time.indexOf(":") + 4, time.length);
if(seconds.length > 2)
**seconds = seconds.substring(0, 2); // Remove any AM/PM afterwards**
if(!isNaN(seconds)) { // Make sure its a number and it's between 0 and 59
if((seconds <= 59) && (seconds >= 0))
return true;
}
return false;
}
就日期而言,我在数据库中存储1/9/2010或01/09/2010时从未遇到任何问题。