如何正确计算将显示在 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 应用程序,我正在其中初始化一个新的预订对象,然后根据用户在表单中输入的值设置它的属性;但是,我无法正确计算 ArrivalDate
和 DepartureDate
之间最终将显示在 Confirm.aspx
页面标签中的总天数。有人可以帮助我吗?
使用 减法 求差异并使用天数 属性 得到准确的天数。
var ArrivalDate = DateTime.Parse( "09 Aug 2008");
var DepartureDate = DateTime.Parse("03 Aug 2009");
var days = DepartureDate.Subtract(ArrivalDate).Days;
我仔细看了你的代码。您实际上正在接近上述内容。请让我知道确切的问题是什么。看起来不仅仅是日期计算。更像是从字符串的日期时间转换。如果这是您面临的问题,请使用以下建议
- 在获取用户输入的同时遵循当前的文化
- 使用相同的区域性从字符串转换日期
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 应用程序,我正在其中初始化一个新的预订对象,然后根据用户在表单中输入的值设置它的属性;但是,我无法正确计算 ArrivalDate
和 DepartureDate
之间最终将显示在 Confirm.aspx
页面标签中的总天数。有人可以帮助我吗?
使用 减法 求差异并使用天数 属性 得到准确的天数。
var ArrivalDate = DateTime.Parse( "09 Aug 2008");
var DepartureDate = DateTime.Parse("03 Aug 2009");
var days = DepartureDate.Subtract(ArrivalDate).Days;
我仔细看了你的代码。您实际上正在接近上述内容。请让我知道确切的问题是什么。看起来不仅仅是日期计算。更像是从字符串的日期时间转换。如果这是您面临的问题,请使用以下建议
- 在获取用户输入的同时遵循当前的文化
- 使用相同的区域性从字符串转换日期