简单的c#错误及 DateAndTime.DateDiff问题

吴啾啾 2017-09-13 09:11:39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ClockAlarm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string strHour = DateTime.Now.TimeOfDay.Hours.ToString();
string strMouit = DateTime.Now.TimeOfDay.Minutes.ToString();
string strSecon = DateTime.Now.TimeOfDay.Seconds.ToString();
if (Convert.ToInt32(strHour) < 10)
{
strHour = "0" + strHour;
}
if (Convert.ToInt32(strMouit) <10)
{
strMouit = "0" + strMouit;
}
if (Convert.ToInt32(strSecon) < 10)
{
strSecon = "0" + strSecon;
}
textBox2.Text = strHour + ";" + strMouit + ":" + strSecon;
int Hour = Convert.ToInt32(strHour);
int Mouit = Convert.ToInt32(strMouit);
int Secon = Convert.ToInt32(strSecon );
numericUpDown3.Value = Convert.ToInt32(strHour );
numericUpDown2.Value = Convert.ToInt32(strSecon );
numericUpDown1.Value = Convert.ToInt32(strSecon );
}

private void timer1_Tick(object sender, EventArgs e)
{
string strHour = DateTime.Now.TimeOfDay.Hours.ToString();
string strMouit = DateTime.Now.TimeOfDay.Minutes.ToString();
string strSecon = DateTime.Now.TimeOfDay.Seconds.ToString();
if (Convert.ToInt32(strHour) < 10)
{
strHour = "0" + strHour;
}
if (Convert.ToInt32(strMouit) < 10)
{
strMouit = "0" + strMouit;
}
if (Convert.ToInt32(strSecon) < 10)
{
strSecon = "0" + strSecon;
}
textBox1.Text = strHour + ":" + strMouit + ":" + strSecon;
}

private void button1_Click(object sender, EventArgs e)
{
DateTime get_time1 = Convert.ToDateTime(DateTime.Now.ToString());
DateTime sta_ontime1 = Convert.ToDateTime(Convert.ToDateTime(textBox2.Text.Trim().ToString()));
long dat = DateAndTime.DateDiff("s",get_time1 ,sta_ontime1 ,FirstDayOfWeek.Sunday,FirstWeekOfYear.FirstFourDays);//此处我有错误
if (dat > 0)
{
timer2.Enabled = true;
label4.Text = "闹钟已启动";
label1.Text = "剩余" + dat.ToString() + "秒";
}
else
{
MessageBox.Show("闹钟已启动,请取消后,再启动");
}
else//此处???
{
long hour =24*3600+dat;
timer2 .Enabled =true;
label4 .Text ="闹钟已启动";
label1 .Text ="剩余"+hour .ToString ()+"秒";
}
}

private void timer2_Tick(object sender, EventArgs e)
{
DateTime get_time1 = Convert.ToDateTime(DateTime .Now .ToString ());
DateTime sta_ontime1 = Convert.ToDateTime(Convert .ToDateTime (textBox2 .Text .Trim ().ToString ()));
long dat = DateAndTime.DateDiff("s", get_time1, sta_ontime1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays);//此处我有错误
if (dat == 0)
{
label4.Text = "时间已到";
timer2.Enabled = false;
}
else
{
label1.Text = "剩余" + dat.ToString() + "秒";
}
}

}
}
代码如上,DateAndTime.DateDiff百度过,语法没错,但不知为什么就出错了,还望大神指教,谢谢了
...全文
285 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅猪儿 2017-09-13
  • 打赏
  • 举报
回复
你看看Form1_Load函数中你对textBox2.text的定义,你截取的时间是当前时间的时分秒,你要把时分秒强制转换成datetime,当然会出错呀
帅猪儿 2017-09-13
  • 打赏
  • 举报
回复
而且当你使用DateAndTime时,需要在右侧引用处添加对Microsoft.VisualBasic引用,并在代码最上端添加using Microsoft.VisualBasic;
正怒月神 2017-09-13
  • 打赏
  • 举报
回复
你应该具体说一下 ,是什么错。 我测试没有问题
DateTime dt = DateTime.Now;
            DateTime dt1 = DateTime.Now.AddSeconds(30);

            long dat = DateAndTime.DateDiff("s", dt, dt1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays);

            Console.WriteLine(dat);     //30
帅猪儿 2017-09-13
  • 打赏
  • 举报
回复
我把你的代码复制到系统中,你打问号的地方往前看,只有一个if,却又两个else,不对应嘛,亲

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧