Javascript:只有在代码中使用单个实例时,函数才能正常工作

Javascript: Function only works correctly when used single instance in code

本文关键字:函数 常工作 工作 实例 代码 单个 Javascript      更新时间:2023-09-26

当我使用下面的函数时,它唯一成功返回的时间是如果我只对单个字符串使用它。如果我试图在代码中针对不同的唯一字符串多次调用该函数,它会返回一个"无法解析的日期"错误。

function oraDate(str) {
    if(str.length > 0){
        channelMap.put("StringCount", str.length);
        if(str.length == 8){
            channelMap.put("8 characters", "Date only");
            var date = str.substring(0, 8);
            var cDate = DateUtil.convertDate("yyyyMMdd", "yyyy-MM-dd", date);
            return cDate + 'T' + '00:00:00';
        } else if(str.length == 12){
            channelMap.put("12 characters", "Date/time only");
            var date = str.substring(0, 8);
            var time = str.substring(8, 12);
            var cDate = DateUtil.convertDate("yyyyMMddHHmm", "yyyy-MM-dd'T'HH:mm", date);
            return cDate+':00';
        } else if(str.length >= 14){
            channelMap.put("14 characters", "Date/time w/seconds only");
            var date = str.substring(0, 8);
            var time = str.substring(8, 14);
            var date_time = date+time;
            var cDate = DateUtil.convertDate("yyyyMMddHHmmss", "yyyy-MM-dd'T'HH:mm:ss", date_time);
            return cDate;
        }
    } else {
        return '0001-01-01T00:00:00';   
    }
}

我忘了回到这里发布修复程序。我错过了12个字符检查的"date_time"变量。

function oraDate(str) {
if(str.length > 0){
    channelMap.put("StringCount", str.length);
    if(str.length == 8){
        channelMap.put("8 characters", "Date only");
        var date = str.substring(0, 8);
        var cDate = DateUtil.convertDate("yyyyMMdd", "yyyy-MM-dd", date);
        return cDate + 'T' + '00:00:00';
    } else if(str.length == 12){
        channelMap.put("12 characters", "Date/time only");
        var date = str.substring(0, 8);
        var time = str.substring(8, 12);
        var date_time = date+time;
        var cDate = DateUtil.convertDate("yyyyMMddHHmm", "yyyy-MM-dd'T'HH:mm", date_time);
        return cDate+':00';
    } else if(str.length >= 14){
        channelMap.put("14 characters", "Date/time w/seconds only");
        var date = str.substring(0, 8);
        var time = str.substring(8, 14);
        var date_time = date+time;
        var cDate = DateUtil.convertDate("yyyyMMddHHmmss", "yyyy-MM-dd'T'HH:mm:ss", date_time);
        return cDate;
    }
} else {
    return '0001-01-01T00:00:00';
}

}