【问题标题】:Parse DateTime string in JavaScript在 JavaScript 中解析 DateTime 字符串
【发布时间】:2010-12-07 07:10:48
【问题描述】:

有谁知道如何以所需格式解析日期字符串dd.mm.yyyy

【问题讨论】:

  • 您想从该格式的字符串创建一个新的日期对象吗?

标签: javascript datetime-format datetime-parsing


【解决方案1】:

见:

代码:

var strDate = "03.09.1979";
var dateParts = strDate.split(".");

var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);

【讨论】:

  • mmm,但是如何检查 strDate 是否有像“30.30.2000”这样的无效值?
  • @user674887,您可以在解析后比较值。例如dateParts[1]-1 == date.getMonth()
  • 如果你的日期都像这样:"2014-05-20T16:43:56.71-06:00" var partesFecha = solicitud.CreatedDate.split("T")[0].split ("-"); var createdDate = new Date(partesFecha[0], (partesFecha[1] - 1), partesFecha[2]);首先提取 T 之前的日期,然后拆分年、月和日。
  • 不敢相信您必须使用拆分才能在 javascript 中获得预期的日期格式
  • 其他人觉得奇怪的是,关于 Date 对象本身的 Mozilla 参考文章说 "Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."?
【解决方案2】:

如果您使用的是 jQuery UI,您可以使用以下格式设置任何日期:

<html>
    <body>
        Your date formated: <span id="date1"></span><br/>
    </body>
</html>

 

var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);

$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));

http://jsfiddle.net/mescalito2345/ND2Qg/14/

【讨论】:

  • +1 我不认为完全超出范围,JavaScript 和 JQuery 是常见的组合。
  • 答案不应依赖于 OP 中未标记或提及的库。当 3 行函数可以完成相同的工作时,使用 jQuery 作为日期库是非常过分的。
【解决方案3】:

我们使用此代码检查字符串是否为有效日期

var dt = new Date(txtDate.value)
if (isNaN(dt))

【讨论】:

【解决方案4】:

参考: http://momentjs.com/docs/#/parsing/string/

如果使用moment.js,可以使用“字符串”+“格式”模式

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

例如:

moment("12-25-1995", "MM-DD-YYYY");

【讨论】:

  • 在大多数情况下,MomentJS 是多余的,因为使用纯 JavaScript 只需要数百个字节,而 MomentJS 是 12.4kb gzipped。方便开发人员,但会减慢网站速度。不值得。
【解决方案5】:

我在 IE 中使用过以下代码。 (兼容IE8)

var dString = "2013.2.4";
var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );

【讨论】:

    【解决方案6】:

    ASP.NET 开发人员可以选择这个方便的内置(MS JS 必须包含在页面中):

    var date = Date.parseLocale('20-Mar-2012', 'dd-MMM-yyyy');
    

    http://msdn.microsoft.com/en-us/library/bb397521%28v=vs.100%29.aspx

    【讨论】:

    • OP 没有提到他使用 ASP.NET
    【解决方案7】:

    使用日期对象:

    var time = Date.parse('02.02.1999');
    document.writeln(time);
    

    给:917902800000

    【讨论】:

    • new Date(Date.parse('02.02.1999'))
    • +1 对于杜克 cmets on new Date(Date.parse('02.02.1999')) for Javascript
    • 在至少两个当前浏览器中返回 NaN。见Why does Date.parse give incorrect results?
    • @Duke—new Date(Date.parse('02.02.1999')) 将产生与new Date('02.02.1999') 相同的结果,包括在某些浏览器中的无效日期。使用内置解析器可以说是解析时间戳的最糟糕的方式。
    【解决方案8】:

    此函数还处理无效的 29.2.2001 日期。

    function parseDate(str) {
        var dateParts = str.split(".");
        if (dateParts.length != 3)
            return null;
        var year = dateParts[2];
        var month = dateParts[1];
        var day = dateParts[0];
    
        if (isNaN(day) || isNaN(month) || isNaN(year))
            return null;
    
        var result = new Date(year, (month - 1), day);
        if (result == null)
            return null;
        if (result.getDate() != day)
            return null;
        if (result.getMonth() != (month - 1))
            return null;
        if (result.getFullYear() != year)
            return null;
    
        return result;
    }
    

    【讨论】:

      【解决方案9】:

      你可以格式化日期只是制作这种类型的代码。在javascript中。

       // for eg.
                    var inputdate=document.getElementById("getdate").value);
                       var datecomp= inputdate.split('.');
      
                      Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); 
                       //new date( Year,Month,Date)
      

      【讨论】:

      • 你应该使用javascript而不是jquery,因为没有jquery标签
      • happy ... 意思就是理解情景
      • 好吧。我认为您的示例与 Martin Staufcik 给出的示例没有任何不同。事实上,他的回答还有处理无效日期的额外逻辑。
      • Martin Staufcik 处理那些通常不会发生的情况。你能给我任何可以给出无效的日历吗?为什么我们应该写这么长的代码,而我们可以在短时间内处理。如果 Martin Staufcik 也给予处理日期和时间来处理,我会更好。
      猜你喜欢
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多