【问题标题】:Only get part out of data-attribute仅从数据属性中获取一部分
【发布时间】:2015-11-20 21:22:55
【问题描述】:

我只想从中抽出时间:

data-timestamp="2014/04/01 10:50:01";

$(items).each(function(){
    var timestamp = $(this).data('timestamp');
    $(this).wrap("<div class='" + timestamp + "'></div>");
});

这会将所有项目包装在自己的时间戳中,因此class="2014/04/01 10:50:01" 所以包装部分应该只包装时间戳小时,所以 10 class="10" - 我不知道该怎么做。

items 是一个带有 div 的数组,它们都包含不同时间的时间戳。

【问题讨论】:

  • 你已经尝试了什么?
  • @BenM - 你看不到他到目前为止所做的尝试吗?他被困在哪里?
  • @Darren Nope,我没有看到任何检索小时数的尝试。
  • 除了他展示他拥有的东西并说他被卡住了......再写代码,他会有自己的答案......如果他不知道该怎么做,他不确定他可能会放什么做

标签: javascript jquery arrays html


【解决方案1】:

您可以将字符串日期转换为实际日期:

var d = Date(timestamp);

然后从d 日期获取小时数

var hour = d.getHours();

所以你的代码变成这样:

 $(items).each(function(){
      var hour = new Date($(this).data('timestamp')).getHours();
      $(this).wrap("<div class='" + hour + "'></div>");
 });

或者看起来不那么复杂

 $(items).each(function(){      
      var date = new Date($(this).data('timestamp')); // turn into a date
      var hour = date.getHour(); // get the hour 0 = midnight
      $(this).wrap("<div class='" + hour + "'></div>");
 });

【讨论】:

    【解决方案2】:

    如果您的格式始终相同并且不想将其解析为日期,则可以使用子字符串:

    $(items).each(function(){
        var timestamp = $(this).data('timestamp').substr(11, 2);
        $(this).wrap("<div class='" + timestamp + "'></div>");
    });
    

    【讨论】:

      【解决方案3】:

      你可以使用.split()

      $(items).each(function () {
          var timestamp = $(this).data('timestamp');
          timestamp = timestamp.split(" ");
          timestamp = timestamp[1].split(":");
          timestamp = timestamp[0];
      
          $(this).wrap("<div class='" + timestamp + "'></div>");
      });
      

      【讨论】:

        【解决方案4】:

        您可以在 Javascript 中使用内置日期格式,然后在此数据对象上使用方法 .getHours()。

        $(items).each(function(){
                var timestamp = $(this).data('timestamp');
        var d = new Date(timestamp);
        
                $(this).wrap("<div class='" + d.getHours()+ "'></div>");
            });
        

        【讨论】:

        • 为什么在营业时间+1? - 0 = 午夜,23 = 十一点
        • 可能与 0=Jan 的月份混淆?
        • 确实 :) 与几个月混淆
        猜你喜欢
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        相关资源
        最近更新 更多