.vue中的格式日期时间格式javascript函数,取决于服务器端实体框架查询

时间:2019-04-10 23:13:34

标签: javascript html entity-framework datetime vue.js

我想从客户端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();

1 个答案:

答案 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