C# 获取ngx引导DateTimePicker从C API到Angular的日期

C# 获取ngx引导DateTimePicker从C API到Angular的日期,c#,angular,ngx-bootstrap,C#,Angular,Ngx Bootstrap,对于使用Angular的ngx引导日期选择器禁用日历天数,我在C上有一个控制器 public List<DateTime> DisabledDays(int carId) { var disabledDates = new List<DateTime>(); var result = GetAll(); var startResult = _rentalDal.GetAll().Where(x => x.CarId == carId).Sel

对于使用Angular的ngx引导日期选择器禁用日历天数,我在C上有一个控制器

public List<DateTime> DisabledDays(int carId)
{
    var disabledDates = new List<DateTime>();
    var result = GetAll();
    var startResult = _rentalDal.GetAll().Where(x => x.CarId == carId).Select(x => x.RentDate).ToList();
    var endResult = _rentalDal.GetAll().Where(x => x.CarId == carId).Select(x => x.ReturnDate).ToList();

    for (int i = 0; i < result.Data.Count; i++)
    {
        //for (var disDate = startResult[i]; disDate <= endResult[i]; disDate = DateTime.Parse(disDate.AddDays(1).ToString("dd/MM/yyyy")))
        for (var disDate = startResult[i]; disDate <= endResult[i]; disDate = disDate.AddDays(1))
        {
            disabledDates.Add(DateTime.Parse(disDate.ToString("dd/MM/yyyy")));
            //disabledDates.Add(Convert.ToDateTime(disDate)).ToString("MM-dd-yyyy");
            //disabledDatesString.Add(dt.(ToString("d MMM YY")));
        }
    }

    return disabledDates;
}
angulars方法在我手动输入时有效,但当我尝试使用函数获取它时,它接收的数据如上所述

    disabledDates: Date[];
    
    this.disabledDates = [
          new Date('2021-03-20'),
          new Date('2021-03-10'),
          new Date('2021-03-11'),
        ];

getDisabledDates(carId:number){
   this.rentalService.getDisabledDates(carId).subscribe(response=>{
    this.disabledDates= response
     console.log(response)
   })
有没有一种方法可以像YYYY-MM-DD那样获取我的日期格式?第二个是这个新的日期,只需为每个循环添加一个for或for

,因为您的startResult和endResult变量都是列表,所以修改后的方法肯定适合您

因此,不需要将列表作为方法的返回类型而不是列表

因为在JSON响应中,DateTime和string都将是string

解决方案:


我喜欢的服务是谁改变日期。在将日期从字符串转换为ngbDate时,与在日期对象中转换相同-假设您的属性是日期

getData(key:any)
{
     this.get(...).pipe(map((response)=>{
        response.date=new Date(response.date)
        return response;
     }
     ))
}
getList(key:any)
{
     this.get(...).pipe(map((response:any[])=>{
        response.forEach(x=>{
         x.date=new Date(x.date)
        })
        return response;
     }
     ))
}
updateData(data2)
{
    //see that in this case you make a copy of the object
    const data={...data2,date:data2.date.getFullYear()+"-"+
                  ('00'+(data2.date.getMonth()+1).slice(-2)+'-'+
                  ('00'+date.getDate()).slice(-2)
               }
    this.http.post(....,data)
}

因此,在您的组件中,您总是使用date对象,我将保持c代码不变,并根据需要更改javascript函数以格式化从后端接收到的值。您可以在数组上使用map函数,然后执行类似substring0,10的字符串函数,或者通过解析然后重新格式化来使用日期操纵。这没关系,但在尝试返回它时,CS0029无法隐式地将类型“System.Collections.Generic.List”转换为“System.Collections.Generic.List”可能您忘记了更改你的方法没错。那奏效了,谢谢你的帮助。刚刚用linq select new标记了结果startresult和最终结果。
public List<string> DisabledDays(int carId)
{
    var disabledDates = new List<string>();
    var result = GetAll();
    var startResult = _rentalDal.GetAll().Where(x => x.CarId == carId).Select(x => x.RentDate).ToList();
    var endResult = _rentalDal.GetAll().Where(x => x.CarId == carId).Select(x => x.ReturnDate).ToList();

    for (int i = 0; i < result.Data.Count; i++)
    {
        for (var disDate = startResult[i]; disDate <= endResult[i]; disDate = disDate.AddDays(1))
        {
            disabledDates.Add(disDate.ToString("yyyy-MM-dd"));
        }
    }

    return disabledDates;
}
getData(key:any)
{
     this.get(...).pipe(map((response)=>{
        response.date=new Date(response.date)
        return response;
     }
     ))
}
getList(key:any)
{
     this.get(...).pipe(map((response:any[])=>{
        response.forEach(x=>{
         x.date=new Date(x.date)
        })
        return response;
     }
     ))
}
updateData(data2)
{
    //see that in this case you make a copy of the object
    const data={...data2,date:data2.date.getFullYear()+"-"+
                  ('00'+(data2.date.getMonth()+1).slice(-2)+'-'+
                  ('00'+date.getDate()).slice(-2)
               }
    this.http.post(....,data)
}