jQuery:将字符串变量传递给日期对象

12

我有一个页面,其中包含许多变量,这些变量包含使用moment.js生成的字符串格式日期(yyyy-mm-dd)。

是否有一种方法可以将这样的变量传递给Javascript日期对象,或将其转换为Javascript日期对象? 只要我能将日期转换为日期对象,我就不感兴趣时间。

我尝试了以下方法,但这并不起作用,我找不到使用moment.js的方法:

var newVar = new Date(dateVar);

非常感谢您对此的帮助,Tim。


2
你可以调用momentjs的toDate()方法而不是将其作为字符串获取... - Arun P Johny
2
请参考以下问题:https://dev59.com/RWsz5IYBdhLWcg3wHUW0 - Femi
2
“var newVar = new Date(dateVar);” 对我来说似乎是有效的。请在控制台中尝试使用“new Date("2014-03-05")”。 - tewathia
3个回答

28

首先,我要说以下内容应该适用于您...

var dateVar = "2010-10-30";
var d=new Date(dateVar);
如果你说上面的方法不起作用,请尝试下面的方法 -
var dateVar = "2010-10-30";
var dsplit = dateVar.split("-");
var d=new Date(dsplit[0],dsplit[1]-1,dsplit[2]);

需要检查证明,请查看 jsfiddle.. 两者都正常工作..JSFiddle


1
非常感谢。第二个对我来说很好用。在这种情况下,使用它是否比使用正则表达式更快? - user2571510
2
正则表达式是用来分割日期字符串的吗?我建议您使用相同的代码,因为我们只需要使用连字符(-)来分割字符串,这是一个简单的任务。所以我不建议您创建另一个对象来进行分割。 - Deepak Sharma
1
你说得对。感谢解释,这很好用 - 只是想确认一下。再次感谢! - user2571510

5

console.log()用于显示输出,运行此代码,您将理解其含义。

    <script type='text/javascript'>
    var StringDate = "2013-4-13"
    var date = StringDate.split("-"); 
    console.log(date[0]);
    console.log(date[1]);
    console.log(date[2]);

    NewDate = new Date(date[0],date[1]-1,date[2]);//Date object
    console.log(NewDate);
    </script>

1
谢谢-这看起来不错!由于我要对连续的多个字符串执行此操作,因此我希望每个字符串的代码量更少。是否有一种使用正则表达式实现相同效果的方法? - user2571510

1
为了解决这个问题,我创建了一个函数来管理从文本到日期的转换:
我的示例使用日期格式为:Jun/1/2016 至 2016-06-01,你可以重新构建该函数以使其适用于你的格式...
左侧数字前添加零以匹配日期类型格式。
function textoafecha(texto)
        {

            hasNumber = /\d/;

            // Contiene el pedazo del texto que contiene el mes
            mestexto = texto.substr(0,3);
            // Contiene el pedazo de texto que contiene el primer numero del dia
            diatextonumero1 = texto.substr(4,1);
            diatextonumero2 = texto.substr(5,1);

            // Si el texo contiene un numero...
            if (hasNumber.test(diatextonumero2))
               {
                 dia = texto.substr(4,2);
                 anotexto = texto.substr(7,4);
               }
            else
               {
                 dia = texto.substr(4,1);
                 dia = "0"+ dia;
                 anotexto = texto.substr(6,4); 
               }


            switch (mestexto) 
            {
              case "Jan" : mesnumero = "01";
                           break;   

              case "Feb" : mesnumero = "02";
                           break;   

              case "Mar" : mesnumero = "03";
                           break;   

              case "Apr" : mesnumero = "04";
                           break;   

              case "May" : mesnumero = "05";
                           break;   

              case "Jun" : mesnumero = "06";
                           break;   

              case "Jul" : mesnumero = "07";
                           break;   

              case "Aug" : mesnumero = "08";
                           break;   

              case "Sep" : mesnumero = "09";
                           break;   

              case "Oct" : mesnumero = "10";
                           break;   

              case "Nov" : mesnumero = "11";
                           break;   

              case "Dec" : mesnumero = "12";
                           break;   

              default : break;

            }

            fechaformateada = anotexto + "-" + mesnumero + "-" + dia;           
            return fechaformateada;

        }       

你的最后一个情况应该是 Dec 而不是 Dic :P - Deepak Sharma
1
很抱歉,我的母语——西班牙语在“十二月”一词中使用的是字母“i”,而不是“e”。 - Ricardo Rivera Nieves

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接