我想从客户端Vue表中删除DateTime格式(渲染速度慢,> 500行)到服务器端,但是我不确定如何!
我有一个vue表,其中有两列开始日期和结束日期,并传递给formatDate()
<td>{{ formatDate(props.item.startDate) }}</td>
<td>{{ formatDate(props.item.endDate) }}</td>
在视图模型中,它们是可空的DateTimes
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
formatDate方法在.vue文件中看起来像这样,其中dayjs()是类似于moment的组件。
formatDate(date) {
if (!date) {
return null
}
return dayjs(date).format('MM/DD/YYYY')
}
在Entity Framework查询中,我只是这样获取日期
var recordsVM = records.Select(r => new GetRecordsReturnViewModel
{
StartDate = r.StartDate,
EndDate = r.EndDate,
// fetch more data
}).Distinct();
我希望能够在linq语句中执行相同的操作,但是我不确定如何执行!
我想要这样的东西,但转换无效
var recordsVM = records.Select(r => new GetRecordsReturnViewModel
{
StartDate = (r.StartDate != null) ? ((DateTime)r.StartDate).ToString("MM/DD/YYYY") as DateTime? : null,
EndDate = (r.EndDate != null) ? ((DateTime)r.EndDate).ToString("MM/DD/YYYY") as DateTime? : null,
}).Distinct();
答案 0 :(得分:0)
格式化DateTime.ToString()
时,必须遵循特定的格式。
This article outlines the formatting characters..
下面显示了如何从DateTime
以及ticks
对象本身将DateTime
转换为字符串格式。
Run this example online via DotNetFiddle.net
using System;
namespace Root
{
public class Program
{
public static void Main()
{
/** could also do:
var nowInTicks = DateTime.Now.Ticks; */
var nowInTicks = 636905426867055839;
var nowString = new DateTime(nowInTicks).ToString("MM/dd/yyyy");
Console.WriteLine(nowString);
Console.WriteLine(DateTime.Now.ToString("MM/dd/yyyy hh:mm:sstt"));
}
}
}
/* RETURN: */
// 04/11/2019
// 04/11/2019 01:32:28AM // in UTC