JS中日期的日期名称

IT技术 javascript jquery
2021-01-19 10:14:37

我需要显示给定日期(如“05/23/2014”)的日期名称,这是我从第 3 方获得的。

我试过使用Date,但我只得到日期。

获取当天名称的正确方法是什么?

6个回答

嗯,三年后……

为什么没有人使用标准 javascript Date 类提供的方法(除了 Callum Linington)?

请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

从日期获取日期名称

function getDayName(dateStr, locale)
{
    var date = new Date(dateStr);
    return date.toLocaleDateString(locale, { weekday: 'long' });        
}

var dateStr = '05/23/2014';
var day = getDayName(dateStr, "nl-NL"); // Gives back 'Vrijdag' which is Dutch for Friday.

获取数组中的所有工作日:

function getWeekDays(locale)
{
    var baseDate = new Date(Date.UTC(2017, 0, 2)); // just a Monday
    var weekDays = [];
    for(i = 0; i < 7; i++)
    {       
        weekDays.push(baseDate.toLocaleDateString(locale, { weekday: 'long' }));
        baseDate.setDate(baseDate.getDate() + 1);       
    }
    return weekDays;
}

var weekDays = getWeekDays('nl-NL'); // Gives back { 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag'} which are the days of the week in Dutch.

对于美国日期,使用“en-US”作为语言环境。

嗯,让我改写一下。经过更多的摆弄之后,IE10 似乎不会理会您指定的任何内容,甚至是语言环境。它总是根据操作系统区域设置返回带有长名称的完整日期。
2021-03-21 10:14:37
仅部分适用于 IE10。工作日被识别但总是返回长名称,即使我指定了“短”。'short' 在 Chrome 中确实有效。此外,IE10 无法识别“月”关键字。当与“long”一起使用时,它只返回一个日期,例如“Thu Jan 1 1970”,而 Chrome 会返回长月份名称。
2021-03-22 10:14:37
@John Jun:是的。目前,移动设备上的大多数浏览器都支持它。最值得注意的是,默认的 Android 浏览器没有。Android 上的 Chrome 可以。(无论如何建议在Android上使用Chrome..不同的讨论。)
2021-03-28 10:14:37
在发布我的解决方案时,我根本不知道这种方法存在。确实非常好的解决方案。这也很好,这直接提供了国际化。另外,很高兴学习新东西:P
2021-04-08 10:14:37
有些人可能不使用它的一个可能原因是,根据您链接到的页面,似乎与移动平台上的语言环境不完全兼容。
2021-04-09 10:14:37

您可以使用该Date.getDay()方法,星期日返回 0,星期六返回 6。因此,您可以简单地创建一个包含日期名称的数组:

var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var d = new Date(dateString);
var dayName = days[d.getDay()];

dateString是您从第三方 API 收到的字符串。

或者,如果您想要日期名称的前 3 个字母,您可以使用Date对象的内置toString方法:

var d = new Date(dateString);
var dayName = d.toString().split(' ')[0];

这将采用d.toString()输出中的第一个单词,即 3 个字母的日期名称。

@HernánEche 根据developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...每个浏览器都支持 Date 就好了。哪个浏览器不适合你?
2021-03-13 10:14:37
但是……“标准 Javascript 日期类”不适用于所有浏览器。
2021-04-05 10:14:37
@HernánEche JavaFx,据我在互联网上能找到的,是 Java,而不是 JavaScript。这些语言完全不同,因此您应该尝试寻找与 Java 相关的东西。有关更多信息,请参阅thesoftwareguild.com/faq/difference-between-java-and-javascript(或 Google 上“java 和 javascript 之间的差异”下的任何其他结果)。
2021-04-05 10:14:37
@Joeytje50 如果你继续搜索,你会“在互联网上发现”Javascript 也可以从 Java 运行,使用 WebView 对象和 WebEngine,你可以加载网页、创建文档模型、css 样式和运行 JavaScript,不客气。
2021-04-06 10:14:37
这可能不是最好的方法。标准的 Javascript Date 类提供了获取全名的方法。看看我的回答。
2021-04-09 10:14:37

使用 Date.toLocaleString() 方法:

new Date(dateString).toLocaleString('en-us', {weekday:'long'})
哇超级快速的功能♥
2021-03-22 10:14:37
let weekday = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][new Date().getDay()]
var days = [
    "Sunday",
    "Monday",
    "...", //etc
    "Saturday"
];

console.log(days[new Date().getDay()]);

简单,阅读JavaScript手册中的Date对象

要使用日期执行其他操作,例如从中获取可读字符串,我使用:

var d = new Date();
d.toLocaleString();

如果您只想要时间或日期,请使用:

d.toLocaleTimeString();
d.toLocaleDateString();

您可以通过执行以下操作来解析日期:

var d = new Date(dateToParse);

或者

var d = Date.parse(dateToParse);
days[Date.now().getDay() 是错误的,因为 Date.now() 返回一个数字,而不是一个日期。
2021-03-20 10:14:37
它应该是 days[new Date().getDay()]
2021-04-02 10:14:37