Datatype DateTime doesn't show Time

Viewed 152

I have problem regarding showing correct time in IndexPage. When I create Patient I want to be display DateTime, currently It is only represent Date but in Index Page I get time.

enter image description here

enter image description here

What I try so far is to add DataAnnotation in my Model something like:

public class AdmissionPacients
{
    [Key]
    public int Id { get; set; }

    [Required]
    [Display(Name = "Date and Time")]
    //[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    //[DataType(DataType.Date)]
    public DateTime DateAndTime { get; set; }

    
    [Required]
    [Display(Name = "Emergency Admission")]
    public bool Emergency { get; set; }

    public string Image { get; set; }

    // Doctor

    [Display(Name = "Doctor Name")]
    public int DoctorId { get; set; }
    [ForeignKey("DoctorId")]
    public virtual Doctor Doctor { get; set; }


    //Patient

    [Display(Name = "Patient Name")]
    public int PatientId { get; set; }
    [ForeignKey("PatientId")]
    public virtual Patient Patient { get; set; }


}

Create.cshtml

   @model BergClinics.Models.ViewModel.AdmisionVM
@{
    ViewData["Title"] = "Upsert";
    var title = "Create Admission Patient";
}

<form method="post" enctype="multipart/form-data">
    @if (Model.AdmissionPatient.Id != 0)
    {
        <input asp-for="AdmissionPatient.Id" hidden />
        title = "Edit Admission Patient";
    }
    <div class="border p-3">
        <div class="form-group row">
            <h2 class="text-info pl-3">@title</h2>
        </div>

        <div class="row">
            <div class="col-8">
                <div class="form-group row py-2">
                    <div class="col-4">
                        <label>Doctor Full Name : </label>
                    </div>
                    <div class="col-8">
                        <select asp-for="AdmissionPatient.DoctorId" asp-items="@Model.DoctorSelectList" class="form-control">
                            <option disabled selected>--Select Docotor--</option>
                        </select>
                    </div>
                </div>

                <div class="form-group row py-2">
                    <div class="col-4">
                        <label>Patient Full Name: </label>
                    </div>
                    <div class="col-8">
                        <select asp-for="AdmissionPatient.PatientId" asp-items="@Model.PatientSelectList" class="form-control">
                            <option disabled selected>--Select Patient--</option>
                        </select>
                    </div>

                </div>



                <div class="form-group row py-2">
                    <div class="col-4">
                        <label>Date and Time :</label>
                    </div>
                    <div class="col-8">
                        <input asp-for="AdmissionPatient.DateAndTime" type="text" class="form-control datepicker">
                    </div>
                </div>

                @*<div class="form-group row py-2">
                        <div class="col-4">
                            <label asp-for="AdmissionPatient.DateAndTime"></label>
                        </div>
                        <div class="col-8">
                            <input asp-for="AdmissionPatient.DateAndTime" class="form-control datepicker" />
                            <span asp-validation-for="AdmissionPatient.DateAndTime" class="text-danger"></span>
                        </div>
                    </div>*@

                <div class="form-group row py-2">
                    <div class="col-4">
                        <label>Patient Image :</label>
                    </div>
                    <div class="col-3">
                        <input type="file" name="files" id="imageBox" multiple class="form-control" />

                    </div>
                </div>


                <div class="form-group row py-2">
                    <div class="col-4">
                        <label>Emergency reception :</label>
                    </div>
                    <div class="col-8">
                        <input asp-for="AdmissionPatient.Emergency" type="checkbox" class="form-control" id="emergencyId">
                        <label class="form-check-label" for="exampleCheck1"></label>
                    </div>
                </div>



                <div class="form-group row py-2">
                    <div class="col-8 offset-4 row">

                        <div class="col">
                            @if (Model.AdmissionPatient.Id != 0)
                            {
                                //update
                                <input type="submit" class="btn btn-info w-100" value="Update" />
                            }
                            else
                            {
                                //create
                                <input type="submit" onclick="return validateInput()" class="btn btn-primary w-100" value="Create" />
                            }

                        </div>
                    </div>
                </div>
            </div>
            <div class="col-4">
                @if (Model.AdmissionPatient.Id != 0)
                {
                    <img src="@Constans.imagePath@Model.AdmissionPatient.Image" width="100%" style="border-radius:5px; border:1px solid #bbb" />
                }
            </div>
        </div>
    </div>

</form>



@section Scripts{

    @{
        <partial name="_ValidationScriptsPartial" />
    }

    <script src="~/js/admissionPatient.js"></script>
}

Index

<div class="container p-3 bg-white">
    <div class="row pt-4">
        <div class="col-6">
            <h2 class="text-primary">Admission Patient List</h2>
        </div>
        <div class="col-6 text-right">
            <a asp-action="Upsert" class="btn btn-primary">
                <i class="fas fa-plus"></i> &nbsp; Create New Doctor
            </a>
        </div>
    </div>

    <br /><br />

    @*<form asp-action="Index">
        <p>
            Date From: <input type="datetime" name="search" />
            Date To: <input type="datetime" name="search">
            <input type="submit" value="Search" />
        </p>
    </form>*@

    @if (Model.Count() > 0)
    {
        <table id="tblData" class="table table-striped border" style="width:100%">
            <thead>
                <tr class="table-dark">
                    <th>
                        Doctor Full Name - CODE
                    </th>

                    <th>
                        Patient Full Name
                    </th>
                    <th>
                        Date and Time
                    </th>
                    <th>
                        Emergency
                    </th>
                    <th></th>

                </tr>
            </thead>
            <tbody>
                @foreach (var obj in Model)
                {
                    <tr>
                        <td width="25%">@obj.Doctor.Firstname @obj.Doctor.Lastname @obj.Doctor.Code</td>
                        <td width="25%">@obj.Patient.FirstName @obj.Patient.LastName</td>
                        <td width="25%">@obj.DateAndTime</td>
                        @if (obj.Emergency == true)
                        {
                            <td width="25%" class="blink_me"><span class="blink_me">Emergency</span></td>
                        }
                        else
                        {
                            <td width="25%"><span class="text-info">@obj.Emergency</span></td>
                        }


                        <td class="text-center">
                            <div class="w-75 btn-group" role="group">
                                <a asp-route-Id="@obj.Id" asp-action="Upsert" class="btn btn-primary mx-2">
                                    <i class="fas fa-edit"></i>
                                </a>
                                <a asp-route-Id="@obj.Id" asp-action="Delete" class="btn btn-danger mx-2">
                                    <i class="far fa-trash-alt"></i>
                                </a>
                            </div>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    }
    else
    {
        <p> No Admission Patient exists.</p>
    }

</div>


@section Scripts{
    <script src="~/js/admissionPatient.js"></script>
}

Controller

public class AdmissionPatientController : Controller
    {
        private readonly ApplicationDbContext _db;
        private readonly IWebHostEnvironment _webHostEnvironment;

        public AdmissionPatientController(ApplicationDbContext db, IWebHostEnvironment webHostEnvironment)
        {
            _db = db;
            _webHostEnvironment = webHostEnvironment;
        }

        public IActionResult Index(string search)
        {
            IEnumerable<AdmissionPacients> admissionPatient = _db.AdmissionPacients
                .Include(u => u.Patient)
                .Include(d => d.Doctor);


            if (!string.IsNullOrEmpty(search))
            {
                if (DateTime.TryParse(search, out var dateTime))
                {
                    admissionPatient = admissionPatient.Where
                         (x => x.DateAndTime.ToShortDateString().Equals(dateTime.ToShortDateString())).ToList();
                }
            }

            return View(admissionPatient);
        }

        //UPSERT GET 
        //UPdate and insERT
        public IActionResult Upsert(int? Id)
        {
            AdmisionVM admissionVM = new AdmisionVM
            {
                AdmissionPatient = new AdmissionPacients(),

                PatientSelectList = _db.Patients.Select(i => new SelectListItem
                {
                    Text = i.FirstName + i.LastName,
                    Value = i.Id.ToString()
                }),

                DoctorSelectList = _db.Doctors.Select(i => new SelectListItem
                {
                    Text = i.Firstname + i.Lastname,
                    Value = i.Id.ToString()
                })

            };

            AdmissionPacients admissionPatient = new AdmissionPacients();
            if (Id == null)
            {
                // this is for create
                return View(admissionVM);

            }
            else
            {
                // this is for edit
                admissionVM.AdmissionPatient = _db.AdmissionPacients.Find(Id);
                if (admissionVM.AdmissionPatient == null)
                {
                    return NotFound();
                }
                return View(admissionVM);
            }

        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Upsert(AdmisionVM admissionVM)
        {

            if (ModelState.IsValid)
            {
                var files = HttpContext.Request.Form.Files;
                string webRootPath = _webHostEnvironment.WebRootPath;



                if (admissionVM.AdmissionPatient.Id == 0)
                {
                    //Creating
                    string upload = webRootPath + Constans.imagePath;
                    string fileName = Guid.NewGuid().ToString();
                    string extension = Path.GetExtension(files[0].FileName);

                    using (var fileStream = new FileStream(Path.Combine(upload, fileName + extension), FileMode.Create))
                    {
                        files[0].CopyTo(fileStream);
                    }

                    admissionVM.AdmissionPatient.Image = fileName + extension;
                    _db.AdmissionPacients.Add(admissionVM.AdmissionPatient);
                }
                else
                {
                    //Updating
                    var objFromDb = _db.AdmissionPacients.AsNoTracking().FirstOrDefault(u => u.Id == admissionVM.AdmissionPatient.Id);

                    if (files.Count > 0)
                    {
                        string upload = webRootPath + Constans.imagePath;
                        string fileName = Guid.NewGuid().ToString();
                        string extension = Path.GetExtension(files[0].FileName);

                        var oldFile = Path.Combine(upload, objFromDb.Image);

                        if (System.IO.File.Exists(oldFile))
                        {
                            System.IO.File.Delete(oldFile);
                        }

                        using (var fileStream = new FileStream(Path.Combine(upload, fileName + extension), FileMode.Create))
                        {
                            files[0].CopyTo(fileStream);
                        }

                        admissionVM.AdmissionPatient.Image = fileName + extension;
                    }
                    else
                    {
                        admissionVM.AdmissionPatient.Image = objFromDb.Image;
                    }

                    _db.AdmissionPacients.Update(admissionVM.AdmissionPatient);
                }

                _db.SaveChanges();
                return RedirectToAction("Index");
            }
            admissionVM.PatientSelectList = _db.Patients.Select(i => new SelectListItem
            {
                Text = i.FirstName + i.LastName,
                Value = i.Id.ToString()
            });

            admissionVM.DoctorSelectList = _db.Doctors.Select(i => new SelectListItem
            {
                Text = i.Firstname + i.Lastname,
                Value = i.Id.ToString()
            });

            return View(admissionVM);
        }


        //GET - DELETE
        public IActionResult Delete(int? id)
        {
            if (id == null || id == 0)
            {
                return NotFound();
            }
            AdmissionPacients admissionPatient = _db.AdmissionPacients
                   .Include(u => u.Patient)
                   .Include(d => d.Doctor)
                   .FirstOrDefault(u => u.Id == id);

            if (admissionPatient == null)
            {
                return NotFound();
            }

            return View(admissionPatient);
        }



        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public IActionResult DeleteAdmission(int? Id)
        {
            var obj = _db.AdmissionPacients.Find(Id);

            if (obj == null)
            {
                return NotFound();
            }

            string upload = _webHostEnvironment.WebRootPath + Constans.imagePath;

            var oldfile = Path.Combine(upload, obj.Image);

            if (System.IO.File.Exists(oldfile))
            {
                System.IO.File.Delete(oldfile);
            }

            _db.AdmissionPacients.Remove(obj);
            _db.SaveChanges();
            return RedirectToAction("Index");
        }

    }

Nothing works! So I want as user to be able to select DateTime and this DateTime needs to be represent in IndexPage Anyone know where did I make mistake ? What I made wrong here ?

1 Answers

I think you should use DateTime.ToString() formatting. There are many formats of datetimes are available in C# . Please check the link => DateTime Formatting Link

DateTime DateAndTime = new DateTime(2020, 5, 29, 5, 50, 0);
DateAndTime.ToString("dddd, dd MMMM yyyy");//Output:Friday, 29 May 2020 05:50
DateAndTime.ToString("dddd, dd MMMM yyyy");//Output:Friday, 29 May 2020 05:50 AM
DateAndTime.ToString("dddd, dd MMMM yyyy");//Output:Friday, 29 May 2020 5:50
DateAndTime.ToString("dddd, dd MMMM yyyy");//Output:Friday, 29 May 2020 5:50 AM
DateAndTime.ToString("dddd, dd MMMM yyyy HH:mm:ss");//Output:Friday, 29 May 2020 05:50:06
DateAndTime.ToString("MM/dd/yyyy HH:mm");//Output:05/29/2020 05:50
DateAndTime.ToString("MM/dd/yyyy hh:mm tt");//Output:05/29/2020 05:50 AM
DateAndTime.ToString("MM/dd/yyyy H:mm");//Output:05/29/2020 5:50
DateAndTime.ToString("MM/dd/yyyy h:mm tt");//Output:05/29/2020 5:50 AM
DateAndTime.ToString("MM/dd/yyyy HH:mm:ss");//Output:05/29/2020 05:50:06

Note: Here Outputs are dummy data output. Please check your code with "ToString" and let me know.

OR
You can use Annotation too like=>
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-ddTHH:mm:ss}")]`

OR
You can also check that link to on stackoverflow. Link

Related