Чтобы избежать ярлыка дубликата, вот краткое изложение всего, что я сделал.
Потратив несколько часов на гугление, чтобы вычислить разницу между двумя датами, я наткнулся на здесь и здесь, где меня убедили использовать NodaTime, чтобы получить разницу в годах, месяцах и днях. Моему приложению требуется точность для расчета пенсии. Я использовал datetimepicker
, чтобы получить значение даты из формы, а затем я использую Date.cs
из здесь, чтобы извлечь дату в dd/mm/year
, а затем вставить ее в базу данных. Чтобы вычесть две даты, используя Period.Between(date1, date2, PeriodUnits.Years).Years
, как мне передать ему datetimepicker
?
Вот что Джон Скит сказал: «Вы можете использовать LocalDateTime.FromDateTime
, а затем использовать свойство Date
, чтобы получить LocalDate
».
Как мне полностью избавиться от времени при вставке в базу данных, а также найти разницу при использовании datetimepicker
вместо Datetime
.
Обновление:
//Date of appointment
var d_app = LocalDateTime.FromDateTime(dateTimePicker1.Value).Date;
//Date of retirement
var d_ret = LocalDateTime.FromDateTime(dateTimePicker2.Value).Date;
var years=Period.Between(d_app,d_ret,PeriodUnits.Years).Years;
var months = Period.Between(d_app, d_ret, PeriodUnits.Months).Months;
var days = Period.Between(d_app, d_ret, PeriodUnits.Days).Days;
MessageBox.Show(years.ToString()+" years"+months.ToString()+"months "+days.ToString()+"days");
Дав код datetimepicker1.value
как 2/21/1990
(d_app) и datetimepicker2.value
как 3/09/2015
(d_ret), он вернул 25 yrs 300months 9147
days
.
Что я делаю неправильно?
Date
. Почему ты звонишьDays
? Почему вы имеете в видуToString
? - person Jon Skeet   schedule 09.03.2015var dateOfBirth = LocalDateTime.FromDateTime(dateTimePicker.Value).Date;
- person Jon Skeet   schedule 09.03.2015Days.ToString
было единственным значимым вариантом для цели, предоставленной Intellisense. - person yeung Leone   schedule 09.03.2015