【问题标题】:JQuery datetime to millisecondsJQuery 日期时间到毫秒
【发布时间】:2012-04-08 21:38:54
【问题描述】:

我有一个 Web 应用程序,我希望将信息发送到数据库。

我有一个日期选择器,它允许用户选择一个日期并将日期格式化为"YYYY-MM-DD"。除此之外,用户还必须使用timepicker 选择时间,将时间格式化为"HH:MM"。这将连接成一个DateTime 字符串作为"YYYY-MM-DD HH:MM"

我需要将其转换为毫秒,以便日期时间被接受为数据库上的正确格式(区域设置格式为YYYY-MM-DD HH:MM:SS.mmm)。

我尝试了许多在这里和其他地方找到的解决方案,以尝试将其转换为毫秒。每当我尝试连接然后转换时,我通常会收到 NaN 错误或“无效日期”,我不能简单地添加转换后的毫秒数。

有没有办法在 jQuery 或 JavaScript 中做到这一点?

【问题讨论】:

  • 这是服务器端应该做的事情。

标签: javascript jquery datetime


【解决方案1】:

$("#datefield").datepicker("getDate").getTime();会成功的

【讨论】:

    【解决方案2】:

    我没有意识到你的实际问题,但我已经编写了一个代码,将日期选择器设置为今天的最小选定日期,代码如下:

    $("#datefield").datepicker({
        dateFormat:"yy-mm-dd",
        minDate:new Date(new Date().getTime())
    });
    

    new Date().getTime() 的返回值是距离1970/01/01 05:30 am 的毫秒数(作为我的系统)

    【讨论】:

      【解决方案3】:

      我自己设法解决了这个问题。感谢那些回答的人。它不是一个理想的解决方案,但它有效。

      var d = $("#date").val();
      var dateParts = new Date((Number(d.split("-")[0])), (Number(d.split("-")[1]) - 1), (Number(d.split("-")[2])));
      var dateis = dateParts.getTime();
      
      var timeEnd = $("#endtime").val();
      var time1 = ((Number(timeEnd.split(':')[0]) * 60 + Number(timeEnd.split(':')[1]) * 60) * 60) * 1000;
      
      var timeStart = $("#starttime").val();
      var time2 = ((Number(timeStart.split(':')[0]) * 60 + Number(timeStart.split(':')[1]) * 60) * 60) * 1000;
      
      var dateTimeEnd = dateis + time1;
      var dateTimeStart = dateis + time2;
      

      这基本上是从日期选择器中获取日期,从时间选择器中获取开始和结束时间。 ajax 接受 2 个日期时间,一个用于开始,一个用于结束。上述解决方案基本上是从输入值中获取所有值,并将其转换为毫秒。这不是最好的处理方式,但可以快速解决。

      【讨论】:

        【解决方案4】:

        我会在服务器端执行此操作,并使用 strtotime 函数转换为时间戳,这将为您提供几秒钟的时间,如果您真的需要毫秒来执行某种脚本:1 秒 = 1000 毫秒。

        如果有的话,您可以使用 jquery 来验证您将在执行此操作之前向服务器端脚本发送有效的日期时间。

        【讨论】:

          【解决方案5】:

          你可以使用 JavaScript Date 对象吗?

          你可以这样使用它: var d = new Date(yyyy, MM, dd, hh, mm, 0, 0).getTime();

          您初始化 Date 对象,然后使用 getTime 函数返回自 1970 年 1 月 1 日以来的毫秒数。

          【讨论】:

            【解决方案6】:
            >> var datetime = new Date();
            undefined
            >> datetime.getTime();
            1332613433314
            

            Date.getTime() 返回自 1970/01/01 以来的毫秒数:

            不过,这应该在服务器端处理。

            【讨论】:

            • 我尝试过这样的事情,但我只能让它与日期部分一起工作。每当我介绍时间部分时,它都会显示“无效日期”
            • 然后 your 代码有异味,但我的代码完全有效。提供您尝试转换为 Date 对象的字符串,我们可以提供帮助。
            • var date1 = new Date($("#date").val()).getTime(); var timeend = $("#endtime").val(); var time1 = Number(timeend.split(':')[0]) * 60 + Number(timeend.split(':')[1]) * 1000; var datetime = date1 + timeend;我确定那是触发“无效日期”的那个
            猜你喜欢
            • 1970-01-01
            • 2014-10-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-01-19
            • 2021-09-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多