查找最短和最长日期
Find minimum and maximum dates
有一个数组:
var a = new Array();
它包含这样的日期条目:"2012-09-12 09:20"等
我需要使用javascript查找最短和最长日期。此代码不适用于时间值。
var minT = Math.min.apply(Math, a);
var maxT = Math.max.apply(Math, a);
如何在javascript中解决此问题?这似乎很复杂,因为我对这种语言不是很有经验。
如果您的数组包含Date
对象,那么这应该可以工作。如果它只包含像'2012-09-12 09:20'
这样的字符串,那么您可以对它们进行排序,并获得第一个和最后一个元素。
a.sort(function(a, b){
return Date.parse(a) - Date.parse(b);
});
var maxT = a[a.length-1];
var minT = a[0];
Math.min
/max
只比较数字,不比较字符串。不要使用它们来表示日期,而是使用Date
对象——它们将根据内部时间戳编号进行比较。尽管如此,max/min将返回该内部数字,因此您需要将其转换回Date
(请参阅数组中日期的最小/最大值?):
但是,如果您想使用字符串或不能使用重新创建的Date,则需要手动运行该数组-使用for循环或ES5.1-only迭代器方法.reduce()
:
var min = datestrings.reduce(function(min, cur) {
return cur < min ? cur : min;
});
// is equivalent to
var min = datestrings[0];
for (var i=1; i<datestrings.length; i++)
if (datestrings[i] < min)
min = datestrings[i];
如果您的代码不需要高效,您也可以对数组进行排序,并获得第一个和最后一个值。默认的字母数字排序将对您的日期格式进行排序,所以这非常简单:
datestrings.sort();
var min = datestrings[0],
max = datestrings[datestrings.lengh-1];
试试这个:
var maxDate=new Date(Math.max.apply(null,dates));
var minDate=new Date(Math.min.apply(null,dates));
我在前面的一个问题
这应该做到:
var maxT=new Date(Math.max.apply(null,a));
var minT=new Date(Math.min.apply(null,a));
如果你必须使用字符串,你可以定义一个函数:
function maxDate(data){
var max = '';
for(var i=0; i<data.length; i++)
if(data[i]>max)
max=data[i];
return max;
}
然后:
var maxT=maxDate(a);
免责声明:只有当所有日期字符串的格式相同时,第二种方法才有效,如果数组中的日期格式不同,则无法使用此函数。
数组中是否填充了Date对象?如果是,请使用它们进行比较,并使用许多已知算法中的一种进行排序。
如果没有,请使用Date对象重新创建数组,每个对象一个,然后按照上面所说的对数组进行排序。
相关文章:
- 查找最短和最长日期
- Mongodb/JS:查找最短(最早)日期
- 如何使用javascript在html中查找日期时间格式
- 在日期列表中查找最早的日期
- 使用JavaScript查找数组中最近的日期
- 查找某个日期范围内的可用天数
- 在javascript中从当前日期查找上一年的日期
- 算法导航:如何查找最近的日期(javascript)
- 在日期范围内查找丢失日期的最有效方法是什么
- XML查询日期范围查找
- 如何使用JavaScript查找数组中的最早日期
- 根据 Javascript 中的日期查找日期
- 如何查找日期之间的持续时间
- MongoDb 在存储为字符串时按日期查找
- 查找 StartDate 和 EndDate 之间的所有日期,在 PHP 或 JavaScript 中间隔一定天数
- 无法使用 getTime() y 查找日期差异
- 如何在文本框中查找两个日期之间的差异
- Javascript - 查找两个 MM-dd-yyyy HH:mm:ss 格式日期之间的秒数
- MongoDB按日期范围查找文档-JavaScript
- Javascript来临日历,查找日期/月份时遇到问题