如何在Javascript中获取日期的特定部分
如何使用JavaScript获取日期的特定部分
如果您需要快速使用纯JavaScript格式化日期,请使用getDate、getMonth + 1、getFullYear、getHours和getMinutes:
var d = new Date(); var datestring = d.getDate() + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes(); // 16-5-2015 9:50
或者,如果您需要用零填充:
var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0" + (d.getMonth()+1)).slice(-2) + "-" + d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2); // 16-05-2015 09:50
您还可以使用`.toString().padStart(2, '0')`来填充零。
值得一提的是,`String.padStart()`仅在ECMAScript 2017中可用。
使用ES6模板字面量和一个辅助函数`let pad = v => `0${v}`.slice(-2);`,可以简化填充版本为:
let datestring = `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}`;
这些方法可以帮助您获取日期的特定部分并格式化它们。
在JavaScript中获取日期的特定部分的原因是为了实现自定义分隔符的日期格式。要实现这一点,可以使用DateTimeFormat对象(它是ECMAScript国际化API的一部分)中的日期(或时间)组件,并手动创建带有所需分隔符的字符串。
解决方法之一是使用DateTimeFormat#formatToParts方法。可以使用解构数组的方式获取日期组件,但这并不理想,因为数组的输出取决于本地化设置。更好的方法是将格式数组映射为结果字符串。
另一种方法是使用DateTimeFormat#format方法逐个提取DateTimeFormat的组件。但需要注意的是,截至2020年3月,使用这种方法存在一个ECMAScript实现的错误,即在分钟和秒钟的前导零方面存在错误(上述方法可以绕过此错误)。
在处理日期和时间时,通常值得使用一个库(例如luxon、date-fns、moment.js不推荐用于新项目),因为该领域存在许多隐藏的复杂性。
需要注意的是,上述解决方案中使用的ECMAScript国际化API在IE10中不受支持(在2020年2月的全球浏览器市场份额中仅占0.03%)。
另一种解决方法是扩展Date对象。尽管这种方法是正确的,但变量名称的懒散程度确实有点过分。正确的变量名称将会更好。
moment.js之所以不推荐用于新项目是因为它已被认为是"被废弃"。其作者不再维护或改进该库。该库非常庞大,并且会在使用Angular或React等流行的JS框架时引发问题,因此它正在被其他选项所取代。
问题的原因是,用户想要在Javascript中获取日期的特定部分。解决方法是使用Date对象的toLocaleDateString()方法,该方法可以根据指定的语言和选项参数返回日期的特定部分。
具体的解决方法如下:
1. 首先,可以使用Options参数来指定日期的格式。例如,可以使用"weekday"选项来表示星期几,使用"year"选项来表示年份,使用"month"选项来表示月份,使用"day"选项来表示日期等。
2. Options参数中的值可以是"numeric"(数字格式)或"2-digit"(两位数字格式)。
3. 可以根据需要更改Options参数的数量和值,以反映每个日期时间项的存在。
4. 可以使用不同的语言选项来表示不同的语言。例如,"en-US"表示美国英语,"en-GB"表示英国英语,"hi-IN"表示印地语,"ja-JP"表示日语等。
5. 可以使用toLocaleDateString()方法来获取日期的特定部分。例如,可以使用"en-US"作为参数来获取以美国英语表示的日期。
6. 如果不传递任何选项,可以使用toLocaleString()方法来获取日期和时间的完整格式。
通过使用Date对象的toLocaleDateString()方法和Options参数,可以方便地获取日期的特定部分,并根据需要进行格式化。同时可以根据不同的语言选项来表示不同的语言。这种方法是获取日期的特定部分的一种简单而有效的方式。
参考链接:
- [Date#toLocaleDateString](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString)
- [toLocaleString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString)
注意:为了使用当前的语言设置,可以将第一个参数传递为null,而不是undefined。