我有一张日期表
<table>
<tr>
<th>Date</th>
</tr>
<tr>
<td>01/03/2018 02:31 AM</td>
</tr>
<tr>
<td>01/13/2018 03:00 AM</td>
</tr>
<tr>
<td>09/02/2017 02:31 AM</td>
</tr>
<tr>
<td>11/29/2017 09:30 PM</td>
</tr>
<tr>
<td>03/01/2018 03:00 AM</td>
</tr>
</table>
我想按时间顺序点菜。我发现另一个线程推荐使用:
$('th').click(function(){
var table = $(this).parents('table').eq(0)
var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()))
this.asc = !this.asc
if (!this.asc){rows = rows.reverse()}
for (var i = 0; i < rows.length; i++){table.append(rows[i])}
})
function comparer(index) {
return function(a, b) {
var valA = getCellValue(a, index), valB = getCellValue(b, index)
return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.localeCompare(valB)
}
}
function getCellValue(row, index){ return $(row).children('td').eq(index).html() }
但输出不能正确地将最新的排序为最旧的。
Date
01/03/2018 02:31 AM
01/13/2018 03:00 AM
03/01/2018 03:00 AM
09/02/2017 02:31 AM
11/29/2017 09:30 PM
这里的问题是必须将单元格值解析为日期格式。稍后,您需要将其重新格式化为区域设置字符串toLocaleString
,以便可以使用LocaleCompare
函数。
第一个变化:
var valA = getCellValue(a, index), valB = getCellValue(b, index)
致:
var valA = Date.parse(getCellValue(a, index)).toLocaleString(), valB = Date.parse(getCellValue(b, index)).toLocaleString();
$('th').click(function(){
var table = $(this).parents('table').eq(0)
var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()))
this.asc = !this.asc
if (this.asc){rows = rows.reverse()}
for (var i = 0; i < rows.length; i++){table.append(rows[i])}
})
function comparer(index) {
return function(a, b) {
var valA = Date.parse(getCellValue(a, index)).toLocaleString(), valB = Date.parse(getCellValue(b, index)).toLocaleString();
//console.log(valA, valB, "____", valA.localeCompare(valB),"_____",valA>valB);
return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.localeCompare(valB)
}
}
function getCellValue(row, index){
return $(row).children('td').eq(index).html();
}
th {
cursor: pointer;
background: lightgrey;
}
td, th {
padding: 5px 15px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<th>Date</th>
</tr>
<tr>
<td>01/03/2018 02:31 AM</td>
</tr>
<tr>
<td>01/13/2018 03:00 AM</td>
</tr>
<tr>
<td>09/02/2017 02:31 AM</td>
</tr>
<tr>
<td>11/29/2017 09:30 PM</td>
</tr>
<tr>
<td>03/01/2018 03:00 AM</td>
</tr>
</table>
问题内容: 我有一个脚本,需要在脚本的不同行执行以下命令: 在我的陈述中,我有以下内容: 我收到以下错误: 如果我将语句的顺序更改为: 我收到以下错误: 如果我再次将语句更改为: 我收到以下错误: 这是怎么回事,我怎么都可以工作? 问题答案: 您的麻烦是,您有一些代码希望对 模块 进行引用,而其他代码希望对类进行引用 。 显然,不能两者兼有。 当您这样做时: 您首先要设置为对该类的引用,然后立即将
介绍 日期时间包是Hutool的核心包之一,提供针对JDK中Date和Calendar对象的封装,封装对象如下: 日期时间工具 DateUtil 针对日期时间操作提供一系列静态方法 DateTime 提供类似于Joda-Time中日期时间对象的封装,继承自Date类,并提供更加丰富的对象方法。 FastDateFormat 提供线程安全的针对Date对象的格式化和日期字符串解析支持。此对象在实际使
主要内容:时间字符串,修饰符(Modifier),格式化,实例SQLite 支持以下五个日期和时间函数: 序号 函数 实例 1 date(timestring, modifier, modifier, ...) 以 YYYY-MM-DD 格式返回日期。 2 time(timestring, modifier, modifier, ...) 以 HH:MM:SS 格式返回时间。 3 datetime(timestring, modifier, modifier
日期/时间操作符 下表演示了基本算术操作符的行为(+,*, 等): 操作符 例子 结果 + date '2001-09-28' + integer '7' date '2001-10-05' + date '2001-09-28' + interval '1 hour' timestamp '2001-09-28 01:00:00' + date '2001-09-28' + time '03:0
主要内容:当前时间和日期,实例,实例,格林威治时间 (GMT),实例,格式化日期和时间,实例,新纪元时间(Epoch Time),实例,实例,POSIX 函数 strftime(),实例本章节我们为大家介绍 Perl 语言对时间日期的处理。 Perl中处理时间的函数有如下几种: 1、time() 函数:返回从1970年1月1日起累计的秒数 2、localtime() 函数:获取本地时区时间 3、gmtime() 函数: 获取格林威治时间 当前时间和日期 接下来让我们看下 localtime()