我正在尝试使用以下函数将我的虚线日期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;
}
作为测试我传入var myDate = '2013-12-11'
并在函数之前和之后注销,但格式保持不变?任何人都可以建议我在哪里出错吗?
这是一个测试 jsFiddle :http://jsfiddle.net/wbnzt/
答案 0 :(得分:3)
使用String Replace将短划线替换为斜杠。
string.replace(/-/g,"/")
答案 1 :(得分:3)
我不确定我是否误解了这个问题;为什么不呢:
function convertDate(stringdate)
{
stringdate = stringdate.replace(/-/g, "/");
return stringdate;
}
答案 2 :(得分: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