C# Windows Phone倒计时应用程序
我试图做两件事: 在圣诞节,只要页面被导航到,就调用一个方法 圣诞节后,将圣诞节日期时间设置为+1年(以便倒计时“重置”) 这是我的密码:C# Windows Phone倒计时应用程序,c#,datetime,windows-phone-8,windows-phone,C#,Datetime,Windows Phone 8,Windows Phone,我试图做两件事: 在圣诞节,只要页面被导航到,就调用一个方法 圣诞节后,将圣诞节日期时间设置为+1年(以便倒计时“重置”) 这是我的密码: private void OnTick(object sender, EventArgs e) { DateTime christmasDay; DateTime.TryParse("11/17/13", out christmasDay); var timeLeft
private void OnTick(object sender, EventArgs e)
{
DateTime christmasDay;
DateTime.TryParse("11/17/13", out christmasDay);
var timeLeft = christmasDay - DateTime.Now;
int x = DateTime.Now.Year - christmasDay.Year;
if (DateTime.Now > christmasDay)
{
if (x == 0)
x += 1;
christmasDay.AddYears(x);
if (DateTime.Now.Month == christmasDay.Month && DateTime.Now.Day == christmasDay.Day)
{
itsChristmas();
}
}
countdownText.Text = String.Format("{0:D2} : {1:D2} : {2:D2} : {3:D2}", timeLeft.Days, timeLeft.Hours, timeLeft.Minutes, timeLeft.Seconds);
}
当我将日期设置为今天时,“itsChristmas()”方法可以工作……但我并不希望在倒计时的每一个滴答声中都调用它。我试着把它放在页面的构造器中,但是没有用。有什么想法吗
第二个问题是,如果我将日期设置为今天的前一天,它会给出负数。我不知道发生这种情况时我的代码出了什么问题:(您的解决方案相当复杂。您可以这样解决它
private void OnTick(object sender, EventArgs e)
{
var now = DateTime.Now;
var christmasDay = NextChristmas();
if (now.Date < christmasDay.Date)
{
// it's not christmas yet, nothing happens
}
if (now.Date == christmasDay.Date)
{
// it's christmas, do your thing
itsChristmas();
}
}
private DateTime NextChristmas()
{
var thisYearsChristmas = new DateTime(DateTime.Now.Year, 12, 25);
if (DateTime.Now.Date <= thisYearsChristmas.Date) return thisYearsChristmas;
return thisYearsChristmas.AddYears(1);
}
private void OnTick(对象发送方,事件参数e)
{
var now=DateTime.now;
var christmasDay=NextChristmas();
如果(now.Date if(DateTime.Now.Date)我切换到上面的代码,认为我可以在不使用独立存储的情况下使其工作,因为我不知道如何将日期时间保存到独立存储中。:((我对此非常陌生。)