JS 转换日期格式
1. JS 如何 把 日期字符串转换成日期
在JavaScript中,将日期字符串转换为日期对象通常使用Date
构造函数或者Date.parse()
方法。
1.1. 常见的方式:
1.1.1. 使用new Date()
构造函数:
如果你的日期字符串符合ISO 8601标准(例如:"2023-09-15T10:30:00"),你可以直接使用new Date()
构造函数来创建一个日期对象。
const dateString = "2023-09-15T10:30:00"; const dateObject = new Date(dateString);
1.1.2. 使用Date.parse()
方法:
Date.parse()
方法解析一个表示日期的字符串,并返回从1970-1-1 00:00:00 UTC到该日期的毫秒数。然后可以使用这个毫秒数来创建一个新的Date
对象。
const dateString = "2023-09-15T10:30:00"; const timestamp = Date.parse(dateString); const dateObject = new Date(timestamp);
1.1.3. 对于非标准格式的日期字符串,你可能需要手动解析字符串并创建Date
对象:
function stringToDate(str) { const [year, month, day] = str.split('-'); return new Date(year, month - 1, day); // JavaScript月份从0开始计数 } const dateString = '2023-01-15'; const dateObject = stringToDate(dateString);
1.1.4. 如果你需要处理不同地区的日期格式,或者想要更强大的日期操作功能,可以考虑使用第三方库如Moment.js
或Day.js
。
使用Day.js
的例子:
const dayjs = require('dayjs'); // 或者通过CDN引入 const dateString = "2023-09-15"; const dateObject = dayjs(dateString).toDate();
记得检查输入的日期字符串是否有效,因为如果提供的字符串不符合预期格式,可能会导致Invalid Date
错误。可以通过检查dateObject
是否为有效的日期对象来避免这种情况:
if (isNaN(dateObject.getTime())) { console.error("Invalid date format"); } else { console.log(dateObject); }
以上就是在JavaScript中将日期字符串转换为日期对象的一些常见方法。根据你的具体需求选择合适的方法即可。
2. JS 如何 把 日期串转换成日期格式字符串
在JavaScript中,如果你有一个日期字符串,并且你想要将其转换为特定格式的日期字符串,你可以按照以下步骤操作:
1. 首先,将日期字符串解析为一个 Date
对象。2. 然后,使用 Date
对象的方法获取年、月、日等各个部分。3. 最后,根据需要的格式,将这些部分组合成一个新的字符串。
这里有几个示例函数来实现这个过程。假设我们有一个日期字符串"2023-09-15"
,我们想把它转换为不同的格式:
2.1. 示例:转换为 "YYYY-MM-DD" 格式
function formatDate(dateStr) { const date = new Date(dateStr); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } const dateString = "2023-09-15"; console.log(formatDate(dateString)); // 输出: "2023-09-15"
2.2. 示例:转换为 "MM/DD/YYYY" 格式
function formatDateSlash(dateStr) { const date = new Date(dateStr); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${month}/${day}/${year}`; } const dateString = "2023-09-15"; console.log(formatDateSlash(dateString)); // 输出: "09/15/2023"
2.3. 示例:转换为 "DD/MM/YYYY" 格式
function formatDateDDMMYYYY(dateStr) { const date = new Date(dateStr); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${day}/${month}/${year}`; } const dateString = "2023-09-15"; console.log(formatDateDDMMYYYY(dateString)); // 输出: "15/09/2023"
2.4. 使用第三方库(如 date-fns
)
如果你想避免手动处理日期格式化,或者需要支持更多的格式选项,可以使用第三方库如 date-fns
或者 moment.js
。以下是使用 date-fns
的例子:
首先安装 date-fns
:
npm install date-fns
然后使用它来格式化日期
import { format } from 'date-fns'; const dateString = "2023-09-15"; const formattedDate = format(new Date(dateString), 'yyyy-MM-dd'); console.log(formattedDate); // 输出: "2023-09-15"
你可以根据你的需求选择不同的格式化模式,例如 'MM/dd/yyyy'
, 'dd/MM/yyyy'
等等。date-fns
提供了丰富的格式化选项,而且性能较好,推荐用于新的项目中。注意 moment.js
已经停止更新,因此对于新项目不推荐使用。