关于javascript日期的问题

时间:2010-01-10 02:04:10

标签: javascript

我有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日。

3 个答案:

答案 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时从未遇到任何问题。