如何将字符串日期转换为可读性更强的版本



我的数据库中有一个日期,如下所示2021/04/26

我想将其转换为字符串日期:4月4日星期一

我尝试过很多不同的方法。我每周都在用JavaScript处理日期.

我试着这样做new Date('2021/04/26').getDate() // Which return very strange date.

有人能帮我把这个字符串转换成这个四月四日星期一

方法1:只使用内置函数,这是最接近示例的方法:

new Date('2021/04/26').toDateString()

方法2:自己这样做:

const months = {
0: 'January',
1: 'February',
2: 'March',
3: 'April',
4: 'May',
5: 'June',
6: 'July',
7: 'August',
8: 'September',
9: 'October',
10: 'November',
11: 'December'
}
const days = [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
]
let yourDate = new Date('2021/04/26');
let yourDateString = days[yourDate.getDay()]+', '+months[yourDate.getMonth()]+' '+yourDate.getFullYear();

结果:";2021年4月1日;

方法3:使用第三方库。

我将把日期解析放在date对象之外。按原样传递字符串可能会工作,或者在某些设置/区域设置中可能会中断。您通常最好手动解析它,并显式设置年、月和日期。

您可以使用Date.toLocaleDateString(mdn(以可读性更强的格式打印日期。这不允许你以任何你可能想要的格式获取日期,但它可以合理地将日期以你想要显示的语言的可读格式显示。

您可以从本地化助手的实现中获得选项。

const currentDate = new Date();
console.log(currentDate.toLocaleDateString('en-gb', { weekday: 'long', year: 'numeric', month: 'short', day: 'numeric' }));
console.log(currentDate.toLocaleDateString('en-gb', { weekday: 'narrow', year: '2-digit', month: 'long', day: '2-digit' }));

如果你想完全控制你的输出,你需要一个库。不过,选择该库超出了Stackoverflow的范围,所以我在这里不建议使用该库。

如果您只需要以该格式输出日期,而不执行任何基于日期的逻辑,则可以在从数据库中选择时转换日期(当然,您仍然可以同时选择原始日期列(。这取决于对列使用正确的日期类型。

对于MySQL:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-格式化

SELECT date_format( DATE_COLUMN, '%W, %M %d' ) as NEW_DATE, ...

如果您正在使用PHP这样的服务器端语言,您也可以使用它进行转换。如果您让我们知道您是如何获取和输出数据的,可能会有更好的方法。

最新更新