2009-06-17 9 views
30

Я хотел был бы иметь возможность преобразовать строку формата даты Java, например. dd/MM/yyyy (07/06/2009) к строке формата даты JavaScript, например. dd/mm/yy (07/06/2009).Формат даты в формате Java для формата даты

Кто-нибудь сделал это раньше или понял, где я могу найти код, который уже делает это?

Заранее спасибо.

Edit:

Спасибо за все ответы, но теперь я понимаю свою ошибку и, возможно, именно поэтому многие из вас изо всех сил, чтобы понять вопрос; JavaScript не имеет встроенной возможности форматирования даты. Я использую jQuery UI datepicker, и я установил его формат даты, предполагая, что он будет называть стандартную функцию JS в какой-то момент, не используя свою собственную библиотеку! Когда я искал googled для форматирования строк, я прыгал прямо к таблицам, какие буквы могли использоваться, пропуская бит в начале, объясняя, как использовать скрипт.

В любом случае мне придется идти вперед и, возможно, написать свой собственный, я думаю, преобразование строки формата даты Java в строку формата даты jQuery (или как можно ближе). Я работаю над i18n нашего продукта и создали класс java, в котором хранится предпочтительная строка формата даты, используемая во всем приложении, и я намерен также иметь возможность поставлять любые jsps с строкой формата, эквивалентной JS.

Спасибо в любом случае.

+1

«дд/мм/гг (07/06/2009)» не вычислит, но я не будет редактировать его, потому что я не уверен точно, что вы намерены. – annakata

+1

Не могли бы вы дать некоторую информацию о том, как вы передаете дату Java в код Javascript? например вы пишете его с помощью JSP? Это очень поможет в ответе на ваш вопрос. –

+1

Возможно, вы имели в виду "dd/mm/yy (07/06/09)"? В противном случае я не понимаю разницы между двумя датами выборки, которые вы дали. – Nosredna

ответ

0

Код javascript в this page реализует некоторые функции даты, и они «используют те же строки формата, что и класс java.text.SimpleDateFormat, с несколькими незначительными исключениями». Это не то, что вам нужно, но это может быть хорошей отправной точкой.

2

Похожая тема ответил здесь: Converting dates in JavaScript

Я лично нашел, что это довольно большая боль и принял предложение автора и использовал библиотеку. Как уже отмечалось, у jQuery datepicker есть решение, которое является жизнеспособным решением, если вы можете позволить себе накладные расходы на загрузку для своего приложения или уже используя его.

+1

Я действительно думаю, что это была возможность сделать это. FWIW, dojo тоже неплохой. http://docs.dojocampus.org/dojo/date/locale – seth

41

Если вам просто нужно передать дату с Java на JavaScript, лучшим способом сделать это, я думаю, было бы преобразование даты Java в миллисекунды с использованием date.getTime(), создание даты JavaScript, инициализированной значением этого миллисекунда, с помощью new Date(milliseconds) а затем форматировать дату с помощью объекта JavaScript Date, например: date.toLocaleString().

+1

У меня есть аналогичная проблема с Java Date -> Javascript Date -> DatePicker. Это помогло мне намного ближе. Благодаря! – jjohn

+1

Лучшее решение. Решил, что SimpleDateFormat не предоставляет месяц, основанный на нулевом значении. – cherouvim

+1

Cleanest решения, так как это зависит только от общедоступной данности, что делает JS-конец легко многоразовый для не-Java клиентов, а – Angad

0

Если вы просто хотите формат дата моих расширений даты будут делать это хорошо - это также разбирает форматы данных и делает много дат математики/сравнивает, а также:

DP_DateExtensions Library

Не уверен, если это» помощь, но я нашел ее неоценимой в нескольких проектах.

4

Вы можете использовать мой плагин 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"); 
+0

Что делать, если дата в этом формате \t \t \t \t // 4 июля 2015 10:45 : 22 AM , а не // 2009-12-18 10: 54: 50.546 – Milson

+0

Привет @Milson, jquery-dataFormat также поддерживает его. Некоторые примеры: https://github.com/phstc/jquery-dateFormat/blob/master/test/format_date_spec.js#L72 –

0

Эта библиотека JavaScript должна быть в состоянии вам помочь.

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

(я не знаю, почему они это как JQuery плагин, потому что он работает автономно.)

Вы бы просто разделить исходную отформатированную дату в отдельных его элементов, а затем создать новый объект Date с этими элементами. Затем используйте метод «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); 
1

Это прекрасно работает для меня:

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

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

Заканчивать 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. Я думаю, что две библиотеки дополняют друг друга.

0

Я предлагаю вам MomentJS с этим Plugin, которые позволяют преобразовать шаблон Java в шаблон JS (MomentJS)

Смежные вопросы