C# 如何找到剩下的确切时间
我正在使用提醒应用程序,我有两个属性,一个是Datetime格式的日期,另一个是string类型的时间。我的问题是,当用户为未来日期设置提醒时,我无法获得准确的小时、分钟和秒。如何用当前时间减去未来时间,以便我可以获得还有精确的小时、分钟和秒。请帮帮我 多谢各位 这是我的模型课C# 如何找到剩下的确切时间,c#,xaml,windows-phone-7,windows-phone-8,C#,Xaml,Windows Phone 7,Windows Phone 8,我正在使用提醒应用程序,我有两个属性,一个是Datetime格式的日期,另一个是string类型的时间。我的问题是,当用户为未来日期设置提醒时,我无法获得准确的小时、分钟和秒。如何用当前时间减去未来时间,以便我可以获得还有精确的小时、分钟和秒。请帮帮我 多谢各位 这是我的模型课 private DateTime _date=DateTime.Today.Date; public DateTime Date { get { return _date; }
private DateTime _date=DateTime.Today.Date;
public DateTime Date
{
get { return _date; }
set
{
TimeSpan tp = value - DateTime.Now;
if (tp.TotalDays>0)
{
RemainingDays = (int)tp.TotalDays;
//TimeSpan ts = value- System.TimeSpan.FromHours(Time);
//string.Format("{0}:{1}", System.Math.Truncate(ts.TotalHours).ToString(), ts.Minutes.ToString());
RemainingHours = (int)tp.TotalHours;
RemainingMin = (int)tp.Minutes;
RemainingSec = (int)tp.Seconds;
SetProperty(ref _date, value);
}
}
}
private string _time = DateTime.Now.TimeOfDay.ToString();
public string Time
{
get { return _time; }
set
{ SetProperty(ref _time, value); }
}
private int _remainingdays;
public int RemainingDays
{
get { return _remainingdays; }
set
{
SetProperty(ref _remainingdays, value);
}
}
private int _remaininghours;
public int RemainingHours
{
get { return _remaininghours; }
set
{
SetProperty(ref _remaininghours, value);
}
}
private int _remainingmin;
public int RemainingMin
{
get { return _remainingmin; }
set
{
SetProperty(ref _remainingmin, value);
}
}
private int _remainingsec;
public int RemainingSec
{
get { return _remainingsec; }
set
{
SetProperty(ref _remainingsec, value);
}
}
}
}
这是我的UI,我必须显示剩余的时间
<StackPanel Orientation="Horizontal" Height="60" HorizontalAlignment="Center" >
<TextBlock x:Name="tbkRemaningTime" FontSize="50" >
<Run Text="{Binding RemainingHours}"/>
<Run Text=":"/>
<Run Text="{Binding RemainingMin}"/>
<Run Text=":"/>
<Run Text="{Binding RemainingSec}"/>
</TextBlock>
</StackPanel>
让我们后退一步。您正在以非常不传统的方式使用属性设置器。考虑编写此代码的客户端:
var y = new YourObject();
Console.WriteLine(y.Date); // prints today's date
y.Date = new DateTime(2015,1,1);
Console.WriteLine(y.Date); // still prints today's date (?!)
设置y.Date
根本没有更改y.Date
!它变异了其他几个字段/属性。这违背了“应将房地产视为智能领域”的核心,更不用说
此外,您没有返回一个TimeSpan
(一种描述两个日期之间间隔的文档化类型),而是强制客户机使用您自己的有限方法来获取相同的数据
相反,请考虑:
class YourObject
{
public DateTime Date {get; set;}
public TimeSpan TimeUntilDate
{
get {return Date - DateTime.Now;}
}
}
并让客户端根据需要使用生成的
TimeSpan
。“Date”不是一个好的属性名称。另外,SetProperty()似乎是一个方法,其唯一任务是设置私有变量。为什么?除此之外,我不知道你在问什么……所以现在你已经编辑并删除了SetProperty()。在第一个实例中,它不是必需的吗?是的,先生,它基本上需要通知我已经创建了另一个类,其中实现了INotifyPropertyChanged接口,所以这个类可以帮助我,无论何时如果我必须通知模型类中的属性,我都会使用SetProperty方法。不是答案,而是……约会被认为是一天中的一个时间参考约会所在时间和地点或约会日程安排人使用的现行时区和夏令时规则。DateTimeOffset类型接近于满足这些要求。