我正在.net表单上运行一个应用程序,该应用程序显示我们从数据库中提取的DateTime输出。显示为到期日期。
public DateTime DATE_EXPIRES { get; set; }
public String DATE_EXPIRES_STR { get; set; }
public void FromRow(Hashtable row)
{
try
{
DATE_EXPIRES = row.ContainsKey("DATE_EXPIRES") && row["DATE_EXPIRES"] != DBNull.Value ? Convert.ToDateTime(row["DATE_EXPIRES"]) : default(DateTime);
DATE_EXPIRES_STR = DATE_EXPIRES.ToString("MMMM dd, yyyy");
}
catch (Exception ex)
{
SCORM.Error += ex.Message + "\r\n";
}
}
我的目标是,不显示到期日期,而是显示“剩余天数”并计算今天与今天之间的差值,并向用户显示“剩余55天”,依此类推。
我的问题是我是否需要使用C#进行转换和显示,还是按原样显示日期,然后让JavaScript查看日期,计算剩余时间,然后输出剩余天数,而不是显示实际的到期日期?
答案 0 :(得分:1)
您可以使用momentjs
计算剩余天数,并使用每个tr转换这样的值。
您不更新C#代码,仅在准备转换为Expires列的文档中添加javascript代码。
$(document).ready(function () {
$("tr").each(function (index, item) {
if (index == 0) {
$(item).find('th').eq(1).text('Days Remaining');
} else {
let date = $(item).find('td').eq(1).text();
var eventdate = moment(date, "MMMM DD, YYYY");
var todaysdate = moment();
days = eventdate.diff(todaysdate, 'days');
$(item).find('td').eq(1).text(days + ' Days Left')
}
})
});
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table>
<tr>
<th>Title</th>
<th>Expires</th>
</tr>
<tr>
<td>Course 1</td>
<td>June 24, 2019</td>
</tr>
<tr>
<td>Course 2</td>
<td>June 24, 2019</td>
</tr>
</table>
</body>
</html>