代码之家  ›  专栏  ›  技术社区  ›  JSON

如何将iso datetime转换为c中的日期?

  •  1
  • JSON  · 技术社区  · 8 年前

    我无法转换 ISO DateTime Parse , ParseExact TryParseExact 所有这些都失败了,并一直给我相同的值输出( 1984-04-26T00:00:00

    我提到过很多 references

    我正在使用DTO,这是属性,

    public DateTime Dob { get; set; }
    

    我正在运行一个 for 循环以连接来自我的 LINQ 查询,我尝试按如下方式进行转换,

    for (int i = 0; i < PatientInfo.Count; i++)
    {
        PatientInfo[i].Dob =
        DateTime.Parse(String.Format("{0:MM/dd/yyyy}", PatientInfo[i].Dob.ToString()));
        PatientInfo[i].PartnerData = PartnerInfo.Where(a => a.FileId == PartnerInfo[i].FileId).ToList();
    }
    

    我错过了什么?

    以下是 API controller

    [HttpGet("{id}")]
    public async Task<IActionResult> GetPatReg([FromRoute] long id)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
    
        var PatientInfo = await _context.PatReg
            .Where(a => a.FileId == id)
            .Select(b => new PatRegDto
            {
                Action = "Get",
                FileId = b.FileId,
                FName = b.FName,
                MName = b.MName,
                LName = b.LName,
                Dob = b.Dob
            }).ToListAsync();
        var PartnerInfo = await _context.PatPar
            .Where(s => s.FileId == id)
            .Select(m => new PatParDto
            {
                RecId = m.RecId,
                FileId = m.FileId,
                ParFileId = m.ParFileId,
                SDate = m.SDate,
                EDate = m.EDate,
            }).ToListAsync();
    
        for (int i = 0; i < PartnerInfo.Count; i++)
    
        {
            PartnerInfo[i].FullName = _context.PatReg.Where(a => a.FileId == PartnerInfo[i].ParFileId)
                                   .Select(t => new { t.fullname })
                                   .Single().fullname;
            PartnerInfo[i].dob = _context.PatReg.Where(a => a.FileId == PartnerInfo[i].ParFileId)
                                   .Select(t => new { t.Dob })
                                   .Single().Dob;
    
            PartnerInfo[i].Action = "Get";
        }
    
        for (int i = 0; i < PatientInfo.Count; i++)
    
        {
            PatientInfo[i].Dob =
            DateTime.Parse(String.Format("{0:MM/dd/yyyy}", PatientInfo[i].Dob.ToString()));
    
            PatientInfo[i].PartnerData = PartnerInfo.Where(a => a.FileId == PartnerInfo[i].FileId).ToList();
        }
    
        if (PatientInfo == null)
        {
            return NotFound();
        }
    
        var DataRes = new
        {
            sdata = PatientInfo
        };
    
        return Ok(DataRes);
    }
    

        public class PatRegDto
    
        {
            public string Action { get; set; }
            private Int64 _FileId;
            public Int64 FileId
            {
                get
                {
                    return this._FileId;
                }
                set
                {
                    this._FileId = value;
                }
            }
            public string FName { get; set; }
            public string MName { get; set; }
            public string LName { get; set; }
            public string fullname
            {
                get { return FName + " " + MName + " " + LName; }
            }
            public DateTime Dob { get; set; }
            public List<PatParDto> PartnerData { get; set; }
        }
        public class PatParDto
    
        {
            public string Action { get; set; }
            public long RecId { get; set; }
            public long FileId { get; set; }
            public long ParFileId { get; set; }
            public DateTime SDate { get; set; }
            public DateTime? EDate { get; set; }
            public DateTime dob { get; set; }
            public string FullName { get; set; }
        }
    
    3 回复  |  直到 8 年前
        1
  •  1
  •   rraszewski    8 年前

    请不要使用 PatientInfo[i].Dob.ToString()) 因为它将使用当前的区域性设置序列化为字符串。根据您的操作系统语言设置,您将有不同的字符串。除此之外 DateTime Date

        2
  •  0
  •   JSON    8 年前

    那么这是唯一的解决方案吗? 我添加了一个 public string DobFormat { get; set; } PatRegDto DTO

    for (int i = 0; i < PatientInfo.Count; i++)
    
                {
                    PatientInfo[i].DobFormat = PatientInfo[i].Dob.ToString("MM/dd/yyyy");
                    PatientInfo[i].PartnerData = PartnerInfo.Where(a => a.FileId == PartnerInfo[i].FileId).ToList();
    
                }
    
        3
  •  0
  •   JSON    8 年前

    根据以上所有有价值的评论,我们给出了另一个答案,

    公共类PatRegDto

    {
        public string Action { get; set; }
        private Int64 _FileId;
        public Int64 FileId
        {
            get
            {
                return this._FileId;
            }
            set
            {
                this._FileId = value;
            }
        }
        public string FName { get; set; }
        public string MName { get; set; }
        public string LName { get; set; }
        public string fullname
        {
            get { return FName + " " + MName + " " + LName; }
        }
        public string Dob { get; set; }
        public List<PatParDto> PartnerData { get; set; }
    }
    

    var PatientInfo = await _context.PatReg
            .Where(a => a.FileId == id)
            .Select(b => new PatRegDto
            {
                Action = "Get",
                FileId = b.FileId,
                FName = b.FName,
                MName = b.MName,
                LName = b.LName,
                Dob = (b.Dob).ToString("dd/M/yyyy"),
            }).ToListAsync();