【问题标题】:Java date format to JavaScript date formatJava 日期格式转 JavaScript 日期格式
【发布时间】:2010-11-03 17:04:01
【问题描述】:

我希望能够转换 Java 日期格式字符串,例如dd/MM/yyyy (07/06/2009) 转换为 JavaScript 日期格式字符串,例如dd/mm/yy (07/06/2009)。

以前有没有人这样做过,或者知道在哪里可以找到一些已经这样做的代码?

提前致谢。

编辑:

感谢所有回复,但现在我意识到我的错误,可能是为什么你们中的许多人都在努力理解这个问题; JavaScript 没有内置的日期格式化功能。我正在使用 jQuery UI 日期选择器,并且我一直在设置它的日期格式,假设它会在某个时候调用标准的 JS 函数,而不是使用它自己的库!当我在谷歌上搜索格式化字符串时,我直接跳到了可以使用哪些字母的表格,跳过了开头解释如何使用脚本的部分。

无论如何,我将不得不继续并可能编写我自己的,将 Java 日期格式字符串转换为 jQuery 日期格式字符串(或尽可能接近) - 我正在研究我们产品的 i18n 并且有创建了一个 java 类来存储整个应用程序中使用的首选日期格式字符串,我的意图是还能够为任何 jsps 提供与 JS 中等效的格式字符串。

还是谢谢。

【问题讨论】:

  • "dd/mm/yy (07/06/2009)" 不会计算,但我不会编辑它,因为我不确定你到底想要什么。
  • 您能否提供一些有关如何将 Java 日期传递给 Javascript 代码的信息?例如你是用 JSP 写出来的吗?这将有助于回答您的问题。
  • 您的意思是“dd/mm/yy (07/06/09)”吗?否则我不明白你给出的两个示例日期之间的区别。
  • 在阅读这个问题大约二十次之后,我认为 Ed 的意思是“如何将用于在 Java 中格式化日期的字符串(使用 SimpleDateFormat)转换为用于在 JavaScript 中格式化日期的等效字符串(使用 Date .format)?'
  • (但是我仍然反对这个问题,因为如果你需要这样做,那你就错了)。

标签: java javascript date-format


【解决方案1】:

如果您使用的是 java,请查看 Simple Date Format 类。

【讨论】:

    【解决方案2】:

    我建议您使用 MomentJS 和此 Plugin,它允许您将 Java 模式转换为 JS 模式 (MomentJS)

    【讨论】:

      【解决方案3】:

      你可以使用我的插件jquery-dateFormat

      // Text
      $.format.date("2009-12-18 10:54:50.546", "dd/MM/yyyy");
      // HTML Object
      $.format.date($("#spanDate").text(), "dd/MM/yyyy");
      // Scriptlet
      $.format.date("<%=java.util.Date().toString()%>", "dd/MM/yyyy");
      // JSON
      var obj = ajaxRequest();
      $.format.date(obj.date, "dd/MM/yyyy");
      

      【讨论】:

      【解决方案4】:

      查看moment.js!它是“用于解析、操作和格式化日期的轻量级 JavaScript 日期库”。这是一个非常强大的小图书馆。

      这是一个例子......

      var today = moment(new Date());
      today.format("MMMM D, YYYY h:m A");        // outputs "April 11, 2012 2:32 PM"
      
      // in one line...
      moment().format("MMMM D, YYYY h:m A");     // outputs "April 11, 2012 2:32 PM"
      

      这是另一个例子......

      var a = moment([2012, 2, 12, 15, 25, 50, 125]);
      a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Monday, March 12th 2012, 3:25:50 pm"
      a.format("ddd, hA");                       // "Mon, 3PM"
      a.format("D/M/YYYY");                      // "12/3/2012"
      

      另外,值得一提的是结帐date.js。我认为这两个库是相辅相成的。

      【讨论】:

        【解决方案5】:

        这对我来说很好用:

        <%
        Date date = Calendar.getInstance().getTime();
        %>
        
        <script>
        var d = new Date(<%=date.getTime()%>);
        alert(d);
        </script>
        

        【讨论】:

          【解决方案6】:

          这个 JavaScript 库应该可以帮助你。

          http://plugins.jquery.com/project/fIsForFormat

          (我不知道他们为什么将它作为一个 jQuery 插件,因为它可以独立运行。)

          您只需将原始格式化日期拆分为各个元素,然后使用这些元素创建一个新的日期对象。然后,使用此库的“Date.f()”方法将其输出为您想要的任何格式。

          例如:

          var dateOld = "11/27/2010",
              dateArr = date1.split("/"),
              dateObj = new Date(dateArr[2], dateArr[0], dateArr[1]),
              dateNew = dateObj.f("MMM d, yyyy");
          
          document.write("Old Format: " + dateOld + "<br/>New Format: " + dateNew);
          

          【讨论】:

            【解决方案7】:

            如果您只想格式化日期,我的日期扩展会很好 - 它还解析数据格式并进行大量日期数学/比较:

            DP_DateExtensions Library

            不确定它是否有帮助,但我发现它在几个项目中非常宝贵。

            【讨论】:

              【解决方案8】:

              如果您只需要将日期从 Java 传递到 JavaScript,我认为最好的方法是使用 date.getTime() 将 Java 日期转换为毫秒,创建一个使用此毫秒值初始化的 JavaScript 日期new Date(milliseconds)然后使用 JavaScript Date 对象的方式格式化日期,例如:date.toLocaleString()

              【讨论】:

              • Java Date -> Javascript Date -> DatePicker 也有类似的问题。这让我更接近了。谢谢!
              • 最佳解决方案。解决了 SimpleDateFormat 不提供从零开始的月份这一事实。
              • 最干净的解决方案,因为它只依赖于一个普遍可用的数据,使得 JS 端也很容易被非 Java 客户端重用
              【解决方案9】:

              这里已经回答了一个类似的话题: Converting dates in JavaScript

              我个人觉得这是一个相当大的痛苦,并接受了作者的建议并使用了一个库。如前所述,如果您可以负担应用程序的下载开销或已经在使用它,那么 jQuery datepicker 是一种可行的解决方案。

              【讨论】:

              【解决方案10】:

              this page 中的 javascript 代码实现了一些日期函数,它们“使用与 java.text.SimpleDateFormat 类相同的格式字符串,但有一些小例外”。它与您想要的不太一样,但它可能是一个很好的起点。

              【讨论】:

                猜你喜欢
                • 2017-12-17
                • 2013-07-18
                • 1970-01-01
                • 1970-01-01
                • 2012-05-24
                • 1970-01-01
                • 1970-01-01
                • 2012-06-05
                • 2017-10-12
                相关资源
                最近更新 更多