【问题标题】:Retrieving date from mysql to javascript gives invalid date从 mysql 到 javascript 检索日期给出无效日期
【发布时间】:2014-01-12 10:31:30
【问题描述】:

这是代码和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 中保存为时间)给了我无效的日期。为什么会发生这种情况?我错过了什么吗?

如果需要更多信息,请告诉我,但请提供帮助。

【问题讨论】:

  • 检查过 dateString 的值吗?
  • 它在 mycase 中给出了 db 值..11.30:00
  • var d1 = new Date("October 13, 1975 11:13:00") 这是默认格式
  • @Vishal 在建议的问题中我不能只通过时间?

标签: java javascript jquery mysql


【解决方案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。

【讨论】:

  • 使用逗号分隔如上或使用毫秒在javascript中构造日期
  • 但是我正在检索数据库值(strtime),我应该如何在 javascript 中传递它?如果你能告诉我
  • 它的日期对象不是时间。
  • 所以在我的数据库中我可能不得不将列类型更改为日期时间?
  • 如果可能的话你可以。使用时间戳进行处理。
【解决方案2】:

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

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 时间,并返回初始化为当前日期的日期对象。

【讨论】:

    【解决方案3】:

    我认为在Mysql 中输入Time 的格式为HH:mm:ss 所以你不能把它解析为date use javascript。 从mysql获取数据时需要结合date和strtime

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      相关资源
      最近更新 更多