【发布时间】:2014-06-02 02:28:37
【问题描述】:
我正在开发提醒应用程序,我采用了两个属性,一个是日期时间格式的日期,另一个是字符串类型的时间。我的问题是我无法获得确切的小时数和分钟数秒当用户设置未来日期的提醒时,如何用当前时间减去他未来的时间,这样我就可以得到准确的小时数和分钟数和秒数。请帮帮我
谢谢 这是我的模型类
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);
}
}
}
} 这是我的用户界面,我必须显示剩余时间
<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>
【问题讨论】:
-
'Date' 不是一个好的属性名称。此外 SetProperty() 似乎是一种方法,其唯一任务是设置私有变量。为什么?。除此之外,我不知道你在问什么......
-
所以现在您已经编辑并删除了 SetProperty()。不是一开始就不需要吗?
-
是的先生,基本上需要通知我已经创建了另一个实现 INotifyPropertyChanged 接口的类,所以每当我必须通知模型类中的属性时,这个类都会帮助我,我使用 SetProperty 方法。
-
不是一个答案,但是......约会被认为是一天中的一个时间,参考了约会所在的时间和地点或约会使用的时间和地点的现行时区和夏令时规则约会调度程序。 DateTimeOffset 类型接近满足这些要求。
标签: c# xaml windows-phone-7 windows-phone-8