2

我正在尝试使用以下函数将我的虚线日期 2013-12-11 转换为 2013/12/11:

function convertDate(stringdate)
{
    // Internet Explorer does not like dashes in dates when converting, 
    // so lets use a regular expression to get the year, month, and day 
    var DateRegex = /([^-]*)-([^-]*)-([^-]*)/;
    var DateRegexResult = stringdate.match(DateRegex);
    var DateResult;
    var StringDateResult = "";

    // try creating a new date in a format that both Firefox and Internet Explorer understand
    try
    {
        DateResult = new Date(DateRegexResult[2]+"/"+DateRegexResult[3]+"/"+DateRegexResult[1]);
    } 
    // if there is an error, catch it and try to set the date result using a simple conversion
    catch(err) 
    { 
        DateResult = new Date(stringdate);
    }

    // format the date properly for viewing
    StringDateResult = (DateResult.getMonth()+1)+"/"+(DateResult.getDate()+1)+"/"+(DateResult.getFullYear());
    console.log(StringDateResult);

    return StringDateResult;
}

作为测试,我myDate = '2013-12-11'在函数之前和之后传入 var 并注销,但格式保持不变?谁能建议我可能在哪里出错?

这是一个测试jsFiddle:http: //jsfiddle.net/wbnzt/

4

3 回答 3

5

使用字符串替换将破折号替换为斜线。

string.replace(/-/g,"/")
于 2013-06-20T17:01:00.487 回答
4

我不确定我是否误解了这个问题;为什么不只是这样:

function convertDate(stringdate)
{
    stringdate = stringdate.replace(/-/g, "/");
    return stringdate;
}
于 2013-06-20T17:02:13.163 回答
1

您的函数按预期工作 convertDate(myDate) 返回日期的 / 值。

您的问题似乎是您的日志记录

var myDate = '2013-12-11';
console.log('Before', myDate); //2013-12-11

convertDate(myDate);
console.log('After', myDate); //2013-12-11 

您的函数返回一个值,因此 convertDate(myDate) 只是返回并且什么都不做。并且您的控制台日志只是返回与以前相同的日期。

如果您将控制台日志更改为

console.log('After', convertDate(myDate)); //2013-12-11 

您将获得预期的结果,或将 myDate 设置为新值

  myDate = convertDate(myDate);
    console.log('After', myDate); //2013-12-11 
于 2013-06-20T17:05:40.303 回答