【问题标题】:Getting 'NaN' while trying to convert a string of date to milliseconds [duplicate]尝试将日期字符串转换为毫秒时获取“NaN”[重复]
【发布时间】:2020-08-19 09:41:38
【问题描述】:

试过这个:

1.

const today = new Date('28.08.2020');
const milliseconds = today.getTime();
const today = Date.parse("28.08.2020")
var today = new Date('28.08.2020');
var milliseconds = today.getMilliseconds();

在尝试将日期字符串转换为毫秒时获取NaN

【问题讨论】:

标签: javascript reactjs date


【解决方案1】:

最好按照其他答案中的建议将日期格式更改为YYYY-MM-DD

或者你可以这样做

 var from = '28.08.2020'.split(".");
    var today = new Date(from[2], from[1] - 1, from[0]);
    const milliseconds = today.getTime();

    console.log(milliseconds);
   







   

【讨论】:

    【解决方案2】:

    您使用了不正确的格式。如果您从后端获取日期,则应将其转换。

        const date = '28.08.2020';
    
        const [day, month, year] = date.split('.');
    
        const validDate = new Date();
    
        validDate.setFullYear(year);
        validDate.setDate(day);
        validDate.setMonth(month);
    
        // or just 
        const validDate2 = new Date(year, month, day);
    
        const milliseconds = validDate.getTime();
        const milliseconds2 = validDate2.getTime();
        
        console.log(milliseconds)
        console.log(milliseconds2)
    
        

    完成此转换后,您可以随意使用日期

    【讨论】:

    • 如果有帮助,请标记为正确,按照我的回答是第一个)谢谢,祝你有美好的一天)
    • 关闭,但在构造函数中需要month - 1。 :-)
    【解决方案3】:

    假设您不想手动解析字符串,您可以尝试使用moment 库,它允许提供用于解析日期的自定义 dateString 模式,如下所示

    const dateString = '28.08.2020';
    
    const date = moment(dateString, "DD.MM.YYYY");
    
    console.log("date", date); // displayed zulu time might be different than your local timezone
    console.log("milliseconds", date.valueOf());
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

    请注意,moment 将接受您当地时区的日期,这可能会带来一些问题。如果你想弥补它,你应该查找moment-timezone

    【讨论】:

    • 显示值不准确
    • 正如我在下面的代码片段中解释的那样,函数假定您传递的日期字符串在您的本地时区中,而仅记录它会将其转换为祖鲁时间。
    【解决方案4】:

    哦,那你可以把输入改成“yyyy-mm-dd”,这样可以吗?

    const date = '28.08.2020';
    let dateFromat = date.split('.');
    dateFromat = `${dateFromat[2]}-${dateFromat[1]}-${dateFromat[0]}`;
    const today = new Date(dateFromat);
    const milliseconds = today.getTime();
    

    输出:1598572800000

    【讨论】:

    • '28.08.2020' 应该被解析为本地,'2020-08-28' 将被解析为 UTC。
    【解决方案5】:

    约会格式错误。

    new Date('2020-08-28') 应该可以工作

    【讨论】:

    • 我需要完全转换我要求的格式。
    • '28.08.2020' 应该被解析为本地,'2020-08-28' 将被解析为 UTC。
    猜你喜欢
    • 2012-08-11
    • 1970-01-01
    • 2012-01-15
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2012-07-29
    相关资源
    最近更新 更多