对字符串日期数组进行排序

2023-11-26

我想按升序对数组进行排序。日期为字符串格式

["09/06/2015", "25/06/2015", "22/06/2015", "25/07/2015", "18/05/2015"] 

甚至需要一个函数来检查这些日期是否是连续形式:

eg - Valid   - ["09/06/2015", "10/06/2015", "11/06/2015"] 
     Invalid - ["09/06/2015", "25/06/2015", "22/06/2015", "25/07/2015"] 

示例代码:

function sequentialDates(dates){
        var temp_date_array = [];

        $.each(dates, function( index, date ) {
            //var date_flag = Date.parse(date);
            temp_date_array.push(date);
        });

        console.log(temp_date_array);

        var last;
        for (var i = 0, l = temp_date_array.length; i < l; i++) {

          var cur = new Date();
          cur.setTime(temp_date_array[i]);
          last = last || cur;
          //console.log(last+' '+cur);

          if (isNewSequence(cur, last)) {
            console.log("Not Sequence");
          }
        }

        //return dates;
    }

     function isNewSequence(a, b) {
          if (a - b > (24 * 60 * 60 * 1000))
              return true;
          return false;
      }

简单的解决方案

无需将字符串转换为日期或使用 RegExp。

简单的解决方案是使用 Array.sort() 方法。 sort 函数将日期格式设置为 YYYYMMDD,然后比较字符串值。假设日期输入的格式为 DD/MM/YYYY。

data.sort(function(a,b) {
  a = a.split('/').reverse().join('');
  b = b.split('/').reverse().join('');
  return a > b ? 1 : a < b ? -1 : 0;
  // return a.localeCompare(b);         // <-- alternative 
});

Update:

建议使用有用的评论localeCompare()简化排序功能。上面的代码片段显示了这种替代方案。

运行代码片段进行测试

<!doctype html>
<html>
<body style="font-family: monospace">
<ol id="stdout"></ol>
<script>
  var data = ["09/06/2015", "25/06/2015", "22/06/2015", "25/07/2015", "18/05/2015"];

data.sort(function(a,b) {
  a = a.split('/').reverse().join('');
  b = b.split('/').reverse().join('');
  return a > b ? 1 : a < b ? -1 : 0;
  
  // return a.localeCompare(b);         // <-- alternative 
  
});

for(var i=0; i<data.length; i++) 
  stdout.innerHTML += '<li>' + data[i];
</script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对字符串日期数组进行排序 的相关文章

随机推荐

  • 在 python shell 中像 IDLE 一样在 VSCode 中运行 Python

    我很清楚这个话题如何从 Visual Studio Code 中执行 Python 代码 但它们都没有展示如何使用导入的文件运行 gt gt gt python shell 因为我想单独调用函数 我知道我可以通过简单地输入来启动 pytho
  • Python:如何获取列表中项目的排序数量?

    在 Python 中 我有一个项目列表 例如 mylist a a a a b b b d d d c c e 我想输出类似的内容 a 4 b 3 d 3 c 2 e 1 如何输出列表中项目的计数和排行榜 我不太关心效率 只关心任何有效的方
  • Jenkins - env: ‘node’: 没有这样的文件或目录

    我有一个使用配置的詹金斯服务器https github com shierro jenkins docker examples tree master 05 aws ecs 我正在运行一个蓝色海洋使用简单的 Jenkinsfile 和管道j
  • 检测 Android 上的键盘 IME 语言

    如何检测在 EditText 中输入的内容使用哪种语言 我知道 API 13 有getCurrentInputMethodSubtype 但是旧版本的替代品是什么 空无一人 我什至不指望上述内容适用于所有键盘 我写了一个流行的键盘 但不知道
  • Codeigniter - 使用两个不同数据库的最佳方法

    有人知道在我的应用程序中使用两个不同数据库的最佳实践吗 我需要将数据存储在位于不同位置的两个数据库中 主机 用户名 密码 所有这些都会改变 我计划像往常一样创建模型 并在构造中设置数据库主机 名称 通行证等 我不确定你是否称这是 最好 的方
  • 从函数返回的记录具有串联的列

    我有一个表 用于存储帐户随时间的变化 我需要将其与其他两个表连接起来 以创建特定日期的一些记录 如果这些记录尚不存在 为了让事情变得更简单 我希望 我将返回正确历史数据的查询封装到一个接受帐户 ID 和日期的函数中 如果我执行 Select
  • 使用 GSON 反序列化通用类型

    我在 Android 应用程序 使用 Gson 库 中实现 Json 反序列化时遇到一些问题 我上过这样的课 public class MyJson
  • 二维 np.digitize

    我有二维数据 并且有一堆用 生成的二维箱scipy stats binned statistic 2d 对于每个数据点 我想要它占用的 bin 的索引 这正是np digitize是用于 但据我所知 它只处理一维数据 Thisstackex
  • BeautifulSoup,但是对于CSS?

    BeautifulSoup 解析 HTML 并提供各种在 HTML 中操作和搜索的方法 CSS 有类似的东西吗 具体来说 我想知道给定的 HTML 文本是否呈现为bold 要么它有一个祖先 strong or the strong
  • VHDL:使用输入端口是不好的做法吗?

    我有一个程序 我按照以下方式使用 inout 端口 port inout unsigned 9 downto 0 if port gt 10 then port lt port 1 end if 我正在使用 inout 端口 这样我就可以读
  • 如何按不同字段分组

    我想找到所有名为 Hans 的用户 并通过对他们进行分组来汇总他们的 年龄 和 孩子 数量 假设我的数据库 用户 中有以下用户 id 01 user Hans age 50 childs 2 id 02 user Hans age 40 c
  • 如何使用 javascript/jQuery/ajax 打印不同的页面?

    使用以下代码 它显示打印对话框并成功打印页面 但是单击同一按钮后如何打印不同的页面 不同的页面名称是 letterprint php div class below movie left My printing contents div
  • -event- 只能出现在 += 或 -= 的左侧

    我有一个循环事件 我试图防止同一方法多次添加到一个事件中 我已经实施了add and remove访问器 但是 我收到一条错误消息 ItemsProcessed can only appear on the left hand side o
  • 如何配置与 Spring 集成的嵌入式 Tomcat 来侦听除 localhost 之外的 IP 地址请求?

    我正在尝试运行春季指南中的示例 构建 RESTful Web 服务 如果我打开的话效果很好本地主机 8080 问候语 但如果我打开其中一个 它就无法建立连接192 168 1 111 8080 问候语 or 140 112 134 22 8
  • PHP/MySQL/PDO 绑定空参数不起作用

    我在以下代码中绑定空参数时遇到问题 nullVariable NULL sql new PDO mysql host Server User Password sql gt setAttribute PDO ATTR ERRMODE PDO
  • Android 通过对话框共享

    我见过 TFLN 等应用程序中的 共享方式 对话框 昨晚的短信 看起来像这样 共享对话框 http garr me wp content uploads 2009 12 sharevia jpg 我正在寻找分享文字 有人能指出我正确的方向吗
  • 为 Jest 的每个测试文件指定 window.location

    我正在升级到 Jest 22 但我遇到了一些有关模拟的问题window location 以前这个方法可以用 但是升级后就不行了 Object defineProperty window location href writable tru
  • 获得发光效果的最佳方式 Windows Phone 7

    我正在摆弄 Windows Phone 7 sdk 并试图让屏幕看起来像老式数字显示屏 现在我正在尝试弄清楚如何使文本像那些很酷的数字时钟之一一样 发光 我假设您会考虑使用着色器来实现这种目的 但似乎在 Windows Phone 7 操作
  • 如何在 C 中声明字符串 [重复]

    这个问题在这里已经有答案了 谁能解释一下这些代码行之间有什么区别 char p String char p2 String char p3 7 String 在什么情况下我应该使用上面的每一个 这个链接应该可以满足你的好奇心 基本上 忘记你
  • 对字符串日期数组进行排序

    我想按升序对数组进行排序 日期为字符串格式 09 06 2015 25 06 2015 22 06 2015 25 07 2015 18 05 2015 甚至需要一个函数来检查这些日期是否是连续形式 eg Valid 09 06 2015