Может ли Javascript найти и заменить цифры на форматированные даты? - PullRequest
0 голосов
/ 10 марта 2010

Может кто-нибудь помочь мне с вопросом о регулярных выражениях javascript? Я пытаюсь заменить все цифры цифры в строке на форматированную версию. Это то, что я имею до сих пор

txt = txt.replace(/\d{10}/g, 'Formatted Date Here');

Возможно ли это? Любая помощь с благодарностью! Спасибо!

Ответы [ 3 ]

3 голосов
/ 10 марта 2010

Попробуйте это:

str = str.replace(/\d{10}/g, function($0) {
    return new Date($0*1000);
});

Date принимает время в миллисекундах. Вот почему вы умножаете совпадение (переданное в $0) на 1000.

Если вы хотите использовать формат, отличный от формата по умолчанию, взгляните на методы Date instance . Вот пример:

str = str.replace(/\d{10}/g, function($0) {
    var d = new Date($0*1000);
    return (d.getMonth() + 1) + ", " + d.getDate() + ", " + (d.getHours() % 12 || 12) + ":" + d.getMinutes() + " " + (d.getHours() < 12 ? 'AM' : 'PM');
});

JavaScript Date.format functon Amarghosh, размещенный здесь, может помочь вам.

1 голос
/ 10 марта 2010

Вы можете использовать replace() с функцией обратного вызова для достижения этого:

var txt = "This is a test of 1234567890 and 1231231233 date conversion";
txt = txt.replace(/\d{10}/g, function(s) {
  return new Date(s * 1000);
});
alert(txt);

выходы:

This is a test of Sat Feb 14 2009 07:31:30 GMT+0800 and Tue Jan 06 2009 16:40:33 GMT+0800 date conversion

Вам необходимо настроить это, чтобы использовать правильный формат даты. Также вам нужно будет рассмотреть вопрос о часовых поясах. Часовой пояс на клиенте не обязательно совпадает с часовым поясом на сервере.

Возможно, вам лучше отформатировать дату на сервере, чтобы избежать подобных проблем.

0 голосов
/ 10 марта 2010

Вы уверены, что хотите использовать регулярные выражения? Вот функция JavaScript Date , которую вы, возможно, захотите проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...