解析日期 dd/MM/yyyy 不适用于 dayjs 或 date_fns

Parse date dd/MM/yyyy don't work for me with dayjs or date_fns

提问人:Heliospeed 提问时间:9/13/2023 最后编辑:DharmanHeliospeed 更新时间:9/21/2023 访问量:89

问:

我会用dayjs(或date-fns)替换momentjs。

在我的示例中,我有这个错误变量的无效日期:

<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script type="text/javascript">
    // date au format dd/MM/yyyy Expected result : 2022-09-23 but I have Invalid Date
    let a = dayjs('23/09/2022', 'DD/MM/YYYY').format('YYYY-MM-DD');
    console.log('date :' + a);
    
    // date au format MM/dd/yyyy Expected result : Invalid Date but I have 2022-09-23
    let b = dayjs('09/23/2022', 'DD/MM/YYYY').format('YYYY-MM-DD');
    console.log('date :' + b);
</script>
</head>

</html>

date-fns 的情况相同

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js"></script>
<script type="text/javascript">
    // date au format dd/MM/yyyy Expected result : 2022-09-23 but I have Invalid Date
    let a = dateFns.parse('23/09/2022', 'dd/MM/yyyy', new Date());
    
    // date au format MM/dd/yyyy Expected result : Invalid Date but I have 2022-09-23
    let b = dateFns.parse('09/23/2022', 'dd/MM/yyyy', new Date());
    console.log('date :' + dateFns.format(b, "YYYY-MM-DD"));
</script>
</head>

</html>

我认为就我而言,dayjs 会用相同的语法快速替换 momentjs。我愿意接受其他解决方案。

我尝试了dayjs或date-fns,我对测试的解释是用我的问题来描述的。

JavaScript 字符串 解析 替换 momentjs

评论


答:

0赞 Dharman #1

我找到了一个解决方案,day.js.org 网站解释应该补充一点:

dayjs.extend(customParseFormat)
dayjs("12-25-1995", "MM-DD-YYYY")

就我而言,这是不可能的,因为无法识别 customParseFormat!

我不得不这样写:

dayjs.extend(window.dayjs_plugin_customParseFormat);

阅读此答案时,我想到了这个解决方案

下面是功能示例:

<html>
    <head>
        <script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/customParseFormat.min.js"></script>
        <script type="text/javascript">
            dayjs.extend(window.dayjs_plugin_customParseFormat);
            let a = dayjs('23/09/2022', 'DD/MM/YYYY').format('YYYY-MM-DD');
            console.log('date :' + a);
            
            let b = dayjs('09/23/2022', 'DD/MM/YYYY').format('YYYY-MM-DD');
            console.log('date :' + b);
        </script>
    </head>
</html>

我从 js 开始,我想我们需要添加另一个库来使用网站 dayjs 或 date-tns 的语法

代表提问者发帖。