javascript - 使用 javascript(也许是正则表达式)格式化 DATE

标签 javascript jquery regex date

我正在使用 JavaScript 和 JQuery,我有一个像这样的字符串(不可更改的 xml 响应):

var str = "2017-01-08T16:06:52+00:00";

如何转换为这样的日期:

08 january 2017, 16:06:52

或者至少:

08 01 2017, 16:06:52

我正在尝试使用 .replace(),例如:

str = str.replace(/(\d{4})-(\d{2})-(\d{2})T(\d{8}).*/,'$2 $3 $1, $4');

但它不起作用。 :(

最佳答案

为此,您可以从字符串创建一个 Date() 对象,然后从 Date() 对象公开的方法中将字符串连接在一起。试试这个:

var str = "2017-01-08T16:06:52+00:00";
var date = new Date(str);
var months = [ "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december" ];

var dateString = ("00" + date.getDate()).slice(-2) + ' ' + months[date.getMonth()] + ' ' + date.getFullYear() + ', ' + ("00" + date.getHours()).slice(-2) + ':' + ("00" + date.getMinutes()).slice(-2) + ':' + ("00" + date.getSeconds()).slice(-2);

console.log(dateString);

请注意,这可以通过使用日期格式化库(例如 MomentJS 或 DateJS)来简化,但是包括整个库来格式化单个日期是相当浪费的。如果您需要在整个站点中重复执行此操作,那么它们可能是值得的。

另请注意,在英语国家,月份名称应大写,因此请考虑修改这种情况的格式。

关于javascript - 使用 javascript(也许是正则表达式)格式化 DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535028/

相关文章:

javascript - Laravel 将所有数据显示在一个干净的数组中

javascript - 完整的背景图像最初是固定的,然后在 DIV 内容结束时滚动

iphone - NSPredicate中的单词边界(\b)导致NSFetchRequest不返回任何托管对象

javascript - 在加载内容之前替换或删除另一个的 javascript 标签

javascript - 如何找到位于给定 (X,Y) 位置的 DOM 节点? ( HitTest )

javascript - 点击进入和更改时触发事件

javascript - 如何为我附加的 div 定义方法和属性?

javascript - 如何在数据表php中添加一个复选框

javascript - 获取与正则表达式与数据属性匹配的行的 ID

javascript - v-for中按升序对数据进行排序