【问题标题】:Get day from Date in JavaScript [duplicate]从JavaScript中的日期获取日期[重复]
【发布时间】:2013-09-04 16:48:24
【问题描述】:

我想从日期开始。假设我的日期是03-08-2013,它的格式是d-mm-yyyy,所以我只想得到d,这是从上面的日期开始的03,所以我试试这个代码,但它不起作用

注意 我想在不包含任何js的情况下做到这一点

var date = '08-03-2013';
var d = new Date(date);
alert(d.getDate());
// 2nd way
alert(date.getDate());

它提醒NaN。这段代码缺少什么? 这是jsfiddel链接Jsfiddle Link

更新

【问题讨论】:

  • 你的data var 的类型是String 而不是Date,你不能在String 类型上调用getDate() 方法
  • 第一种方式(alert(d.getDate()))有什么问题?
  • @putvande 它是第一种方式的警报 NaN
  • @putvande new Date('03-08-2013') 没有正确解析日期,所以它不会返回预期的结果。
  • @putvande d.getDate() 给我8 这是月份,而不是日期。

标签: javascript date


【解决方案1】:

使用moment.js。它的解析能力比Date类灵活得多。

var m = moment('03-08-2013','DD-MM-YYYY');
var dayOfMonth = m.date();

【讨论】:

    【解决方案2】:

    随心所欲地使用它..

    var date = '08-03-2013';
    date=date.replace(/([0-9]{2})\-([0-9]{2})\-([0-9]{4})/g, '$3-$2-$1');
    var d = new Date(date);   
    alert(d.getDate());
    

    谢谢

    【讨论】:

    • 我不知道是谁投了反对票,但它最终对我有用.. 警报显示 8
    • 是的,但是 OP 正在寻找 3,而不是 8。
    • 但是如果他/她遵循该格式,我会在右侧的评论中显示格式,然后他/她将获得正确的值..即 //yyyy-mm-dd
    • @SarwarCSE 这行得通,但是如果我的格式是 dd-mm-yyyy 怎么办?那么这将行不通,顺便说一句,为这项工作投票
    • @AzamAlvi 如果答案不正确,您不应该“为努力投票”。
    【解决方案3】:

    JS(以及许多语言)中的日期解析是有问题的,因为当输入是日期字符串时,什么是什么数据是相当模糊的。例如,使用您的日期(2013 年 8 月 3 日)可以表示为

    • 03-08-2013 (dd-mm-yyyy)
    • 08-03-2013 (mm-dd-yyyy)

    但是,鉴于 只是 日期字符串,无法判断日期实际上是 2013 年 8 月 3 日还是 2013 年 3 月 8 日。

    您应该独立传递您的日期值以保证正确解析日期:

    var
        str = '08-03-2013',
        parts = str.split('-'),
        year = parseInt(parts[2], 10),
        month = parseInt(parts[1], 10) - 1, // NB: month is zero-based!
        day = parseInt(parts[0], 10),
        date = new Date(year, month, day);
    
    alert(date.getDate()); // yields 3
    

    【讨论】:

    • 从零开始的月份是什么时候?
    【解决方案4】:

    您无法知道访问者的区域设置。

    如果您知道字符串的格式始终为d-mm-yyyy,那么只需自己解析该值:

    function GetDay(rawValue) {
        var parts = rawValue.split("-");
        if (parts.length === 3) {
            var day = parseInt(parts[0], 10);
            if (!isNaN(day))
                return day;
        }
        alert("invalid date format");
        return null;
    }
    

    Live test case.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2020-09-30
      相关资源
      最近更新 更多