从mysql到javascript检索日期会产生无效日期

时间:2013-12-24 07:12:16

标签: java javascript jquery mysql

这是代码和mysql表

Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/2a", "root", "root");
Statement st=con.createStatement();
ResultSet rsta=st.executeQuery("Select * from data");
while(rsta.next()) {
  x14=rsta.getTime("strtime");
}
%>
<div id="TextBoxesGroup">
<input type="hidden" id="time" name="time" value="<%=x14%>"/>
</div>
<script>

$(document).ready(function(){     
    var dateString=$('#time').val();
    var d1 = new Date(dateString);


    var newTextBoxDiv = $(document.createElement('div'))
         .attr("id", 'TextBoxDiv' + counter);
    newTextBoxDiv.after().html('<div><label style="float:left;">'+d1+'</label>);
    newTextBoxDiv.appendTo("#TextBoxesGroup");  
</script>


+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| date    | date        | YES  |     | NULL    |                |
| strtime | time        | YES  |     | NULL    |                |
| endtime | time        | YES  |     | NULL    |                |
| freq    | varchar(30) | YES  |     | NULL    |                |
| inter   | int(11)     | YES  |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+

变量d1(它在db中保存为时间)给了我无效的日期。为什么会发生这种情况?我错过了什么吗?

请告诉我更多信息,但需要帮助。

3 个答案:

答案 0 :(得分:1)

有四种方式来启动日期:

new Date() // current date and time
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)

以上大多数参数都是可选的。未指定,导致传入0。

创建Date对象后,可以使用许多方法对其进行操作。大多数方法允许您使用本地时间或UTC(通用或GMT)时间来获取和设置对象的年,月,日,小时,分钟,秒和毫秒。

所有日期均以毫秒为单位,从世界时间1970年1月1日00:00:00(UTC)开始,每天包含86,400,000毫秒。

启动日期的一些例子:

var today = new Date()
var d1 = new Date("October 13, 1975 11:13:00")
var d2 = new Date(1979,5,24)
var d3 = new Date(1979,5,24,11,33,0)

它的日期对象所以你应该需要dateString而不是timeString。

答案 1 :(得分:0)

这是一个辅助函数,用于从自定义时间格式中获取正确的日期对象

var helper = function(time) {
    var regex = /^\s*((0?[0-9])|(1?[0-9])|(2?[0-3]))\s*\.\s*[0-5]?[0-9]\s*:\s*[0-5]?[0-9]\s*$/g;
    time = time.match(regex);

    if(time && time.length === 1) {
        time = time[0];
        var date = new Date();
        var endIndex = time.indexOf('.');
        var hr = Number(time.substr(0, endIndex).trim());
        time = time.substr(endIndex + 1).trim();
        endIndex = time.indexOf(':');             
        var min = Number(time.substr(0, endIndex).trim());
        time = time.substr(endIndex + 1).trim();                
        var sec = Number(time);
        date.setHours(hr);
        date.setMinutes(min);
        date.setSeconds(0);
        return date;
    }

    return null;
};

这将以24小时格式接受HH.MM:SS中的时间并返回初始化为当前日期的日期对象。

答案 2 :(得分:0)

我认为Time中的类型Mysql的格式为HH:mm:ss 因此,您无法将其解析为date使用javascript。 从mysql获取数据时,您需要结合datestrtime

 x14= rsta.getDate("date") + " " +  rsta.getTime("strtime");