如何正确计算将显示在 Confirm aspx 页面上的 NoOfDays 标签?

How can I calculate the NoOfDays label correctly that will be displayed on the Confirm aspx page?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace XEx08Reservation
{
    public partial class Request : System.Web.UI.Page
    {
        private string currentDate = DateTime.Today.ToShortDateString();
        private string currentYear = DateTime.Today.Year.ToString();


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // set copyright year no matter what
                lblYear.Text = currentYear;

                // display saved reservation data if there is any
                if (Session["Reservation"] != null)
                {
                    DisplayReservation();
                }
                else  {
                    // otherwise, set default values
                    txtArrivalDate.Text = currentDate;
                    rdoKing.Checked = true;
                }   
            }
        }

        private void DisplayReservation()
        {
            Reservation reservation = (Reservation)Session["Reservation"];

            txtArrivalDate.Text = reservation.ArrivalDate.ToShortDateString();
            txtDepartureDate.Text = reservation.DepartureDate.ToShortDateString();
            ddlNoOfPeople.SelectedValue = reservation.NoOfPeople.ToString();

            if (reservation.BedType == "King")
                rdoKing.Checked = true;
            else if (reservation.BedType == "Two Queens")
                rdoDouble.Checked = true;
            else
                rdoSingle.Checked = true;

            txtSpecialRequests.Text = reservation.SpecialRequests;
            txtFirstName.Text = reservation.FirstName;
            txtLastName.Text = reservation.LastName;
            txtEmail.Text = reservation.Email;
            txtPhone.Text = reservation.Phone;
            ddlPreferredMethod.SelectedValue = reservation.PreferredMethod;
        }

        protected void btnClear_Click(object sender, EventArgs e)
        {
            txtArrivalDate.Text = currentDate;
            txtDepartureDate.Text = "";
            ddlNoOfPeople.SelectedIndex = -1;
            rdoKing.Checked = true;
            rdoDouble.Checked = false;
            rdoSingle.Checked = false;
            txtSpecialRequests.Text = "";
            txtFirstName.Text = "";
            txtLastName.Text = "";
            txtEmail.Text = "";
            txtPhone.Text = "";
            ddlPreferredMethod.SelectedIndex = 0;
            lblMessage.Text = "";
        }

        protected void btnSubmit_Click(object sender, EventArgs e)

        {
            Reservation reservation = new Reservation();
            reservation.ArrivalDate = Convert.ToDateTime(txtArrivalDate.Text);
            reservation.DepartureDate = Convert.ToDateTime(txtDepartureDate.Text);
            TimeSpan tsDuration = reservation.DepartureDate - reservation.ArrivalDate;
            reservation.NoOfDays = Convert.ToInt32(tsDuration);
            tsDuration.Days.ToString();
            reservation.NoOfPeople = Convert.ToInt32(ddlNoOfPeople.SelectedValue);
            reservation.PreferredMethod = Convert.ToString(ddlPreferredMethod.SelectedValue);

            if (rdoKing.Checked) reservation.BedType = "King";
            else reservation.BedType = "Double Double";

            reservation.SpecialRequests = txtSpecialRequests.Text;
            reservation.FirstName = txtFirstName.Text;
            reservation.LastName = txtLastName.Text;
            reservation.Email = txtEmail.Text;
            reservation.Phone = txtPhone.Text;

            Session["Reservation"] = reservation;
            Response.Redirect("Confirm.aspx");

        }
    }
}

大家好,

我有一个 Web 应用程序,我正在其中初始化一个新的预订对象,然后根据用户在表单中输入的值设置它的属性;但是,我无法正确计算 ArrivalDateDepartureDate 之间最终将显示在 Confirm.aspx 页面标签中的总天数。有人可以帮助我吗?

使用 减法 求差异并使用天数 属性 得到准确的天数。

var ArrivalDate = DateTime.Parse( "09 Aug 2008");
var DepartureDate = DateTime.Parse("03 Aug 2009");
var days = DepartureDate.Subtract(ArrivalDate).Days;

我仔细看了你的代码。您实际上正在接近上述内容。请让我知道确切的问题是什么。看起来不仅仅是日期计算。更像是从字符串的日期时间转换。如果这是您面临的问题,请使用以下建议

  1. 在获取用户输入的同时遵循当前的文化
  2. 使用相同的区域性从字符串转换日期