43

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

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

提前致谢。

编辑:

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

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

不管怎么说,还是要谢谢你。

4

10 回答 10

50

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

于 2009-06-17T15:38:20.057 回答
6

你可以使用我的插件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");
于 2010-10-02T16:00:54.173 回答
3

此处已回答了类似的主题: Converting dates in JavaScript

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

于 2009-06-17T15:33:39.877 回答
2

查看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"

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

于 2012-04-11T19:28:04.383 回答
1

这对我来说很好:

<%
Date date = Calendar.getInstance().getTime();
%>

<script>
var d = new Date(<%=date.getTime()%>);
alert(d);
</script>
于 2011-10-07T12:55:30.080 回答
1

这个 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);
于 2010-11-28T06:19:35.600 回答
1

我建议您使用带有此插件的MomentJS ,它允许您将 Java 模式转换为 JS 模式(MomentJS)

于 2017-06-20T10:13:42.773 回答
0

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

DP_DateExtensions 库

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

于 2009-08-14T14:49:32.280 回答
0

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

于 2009-06-17T15:26:09.503 回答
0

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

于 2009-06-17T15:33:39.690 回答