Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从javascript中的字符串创建日期对象_Javascript_String_Date - Fatal编程技术网

如何从javascript中的字符串创建日期对象

如何从javascript中的字符串创建日期对象,javascript,string,date,Javascript,String,Date,拥有此字符串30/11/2011。我想将其转换为日期对象 我是否需要使用: 或 ?您肯定要使用第二个表达式,因为JS中的月份是从0枚举的 您也可以使用Date.parse方法,但它使用不同的日期格式: var timestamp = Date.parse("11/30/2011"); var dateObject = new Date(timestamp); 语法如下: new Date(year, month [, day, hour, minute, second,

拥有此字符串
30/11/2011
。我想将其转换为日期对象

我是否需要使用:


您肯定要使用第二个表达式,因为JS中的月份是从0枚举的

您也可以使用Date.parse方法,但它使用不同的日期格式:

var timestamp = Date.parse("11/30/2011");
var dateObject = new Date(timestamp);

语法如下:

new Date(year, month [, day, hour, minute, second, millisecond ])
所以

是正确的;天、小时、分钟、秒、毫秒是可选的


在js中,月份是从0开始索引的。

对于实际中有关JavaScript规范的任何问题,我都强烈建议使用、和

正如它在关于您使用的参数变量中所述:

new Date(year, month, day [, hour, minute, second, millisecond ])
关于月份参数:

月份表示月份的整数值,从1月的0开始到12月的11

显然,那么,您应该使用11月份的月份编号10


注:我推荐MDN的原因是正确性、对事物的良好解释、示例和浏览器兼容性图表。

如上所述,有多种创建日期的方法。我不会重复同样的内容。这里有一个在Java脚本中将字符串转换为日期的小方法,如果您正在寻找的是这个方法

function compareDate(str1){
// str1 format should be dd/mm/yyyy. Separator can be anything e.g. / or -. It wont effect
var dt1   = parseInt(str1.substring(0,2));
var mon1  = parseInt(str1.substring(3,5));
var yr1   = parseInt(str1.substring(6,10));
var date1 = new Date(yr1, mon1-1, dt1);
return date1;
}
非常简单:

var dt=new Date("2011/11/30");

日期应为ISO格式yyyy/MM/dd。

首先按如下方式提取字符串

var dateString = str.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
那么


我不敢相信javascript与解析日期不一致。我听说没有时区时的默认值将从UTC更改为本地--希望网络准备就绪;)

当涉及到解析日期时,我更喜欢让Javascript来完成繁重的工作。不过,以相当透明的方式处理本地时区问题会很好。考虑到这两件事,这里有一个函数可以在当前的状态下完成这项工作——当Javascript发生变化时,它仍然可以工作,但随后可以删除(当然,人们需要一点时间来赶上较旧的浏览器/NodeJ)



我们需要一个日期对象;所以,创建一个。如果有时区,我们就完了。否则,使用+hh:mm格式创建一个本地时区字符串(比+hhmm更容易接受)。

我认为它应该是var d=新日期(2011,10,30);令人惊讶的是,大约1.5年后,有人注意到了这一点,24000多个浏览量。或者我们可以使用
新日期(2011,11,0)
它也可以直接选择日期,作为单个字符串
const Date=new Date(“2018-05-09”)
No,让引擎为您处理它,并使用建议的
日期。parse
在使用parse方法时要注意时区问题。如果解析的日期恰好无效(如2月30日),要注意Javascript以静默方式返回与解析的日期完全不同的日期。还要注意返回数字,特别是1970年以来的ms。而Dogbert的答案将返回一个JS Date对象,其中有一个从
\uuuuu proto\uuuuu
提供的健壮的方法选择。这将返回一个数字,而不是日期。根据官方文档:注意:由于浏览器差异和不一致,强烈建议使用日期构造函数(和date.parse,它们是等效的)解析日期字符串。避免通过解析字符串来创建日期对象。相反,构建您自己的函数,从您拥有的字符串中理解年、月和日,然后通过将不同的数字传递给构造函数来创建日期。请参阅@IgorDymov的答案。您的查询是关于一个“字符串”,而不是三个数字的顺序。这个问题有点让人困惑——第一句话和标题是关于字符串解析的,而问题的其余部分是关于从一组整数构造一个日期。我投票以重复的方式结束,因为我假设标题是正确的,您正在寻找字符串解析。这非常有用,应该是最重要的答案,因为它实际上以一种可适应的方式回答了问题,具体取决于您的日期字符串格式(并且没有任何时区问题的风险).对我来说,这也是最好的答案。当我偶然发现自己需要这样做,并了解到月份从0开始索引时,我思考了几种方法如何更改月份值。我又向下滚动了一些,发现了这个:-)谢谢!这实际上正确地回答了这个问题。“字符串中的日期对象”。谢谢你的回答。实际上,根据链接,日期也是可选的。它默认为每月的第一天。据我所知,官方ISO8601格式是yyyy MM dd()是的,它通过执行新日期(“2019-12-21 07:25:00”)@ValterEkholm在chrome和ff中运行良好,但在safari@gardelin-谢谢
new Date(year, month, day [, hour, minute, second, millisecond ])
function compareDate(str1){
// str1 format should be dd/mm/yyyy. Separator can be anything e.g. / or -. It wont effect
var dt1   = parseInt(str1.substring(0,2));
var mon1  = parseInt(str1.substring(3,5));
var yr1   = parseInt(str1.substring(6,10));
var date1 = new Date(yr1, mon1-1, dt1);
return date1;
}
var dt=new Date("2011/11/30");
var dateString = str.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
var d = new Date( dateString[3], dateString[2]-1, dateString[1] );
function strToDate(dateStr)
{
    var dateTry = new Date(dateStr);

    if (!dateTry.getTime())
    {
        throw new Exception("Bad Date! dateStr: " + dateStr);
    }

    var tz = dateStr.trim().match(/(Z)|([+-](\d{2})\:?(\d{2}))$/);

    if (!tz)
    {
        var newTzOffset = dateTry.getTimezoneOffset() / 60;
        var newSignStr = (newTzOffset >= 0) ? '-' : '+';
        var newTz = newSignStr + ('0' + Math.abs(newTzOffset)).slice(-2) + ':00';

        dateStr = dateStr.trim() + newTz;
        dateTry = new Date(dateStr);

        if (!dateTry.getTime())
        {
            throw new Exception("Bad Date! dateStr: " + dateStr);
        }
    }

    return dateTry;
}