文本框中显示动态时间

MicroX.S.r 2011-04-07 12:06:41
写了一个查看时间的程序,想在文本框中动态显示时间,看看我的代码,该如何实现?
关于代码只是在Form1.cs里改就可以了,这个代码看着很麻烦。不过就代码论问题吧!
请高手指点

<Form1.cs>
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 显示各个时区的时间
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}



public void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
object strq = comboBox1.SelectedItem;
Time1 sjzh = new Time1();

textBox1.Text = sjzh.shijianzhuanhuan(strq.ToString()).ToString();

}

private void timer1_Tick(object sender, EventArgs e)
{
Time1 dt = new Time1();
label3.Text = "北京时间为:\n" + dt.now.ToString();
}


}
}
<Time1.cs>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 显示各个时区的时间
{
class Time1
{
private int hour = DateTime.Now.Hour;
private int minute = DateTime.Now.Minute;
private int second = DateTime.Now.Second;
public string date = DateTime.Now.ToString();
private int year = DateTime.Now.Year;
private int month = DateTime.Now.Month;
private int day = DateTime.Now.Day;

public int ahour
{
get { return hour; }
set { hour = value; }
}
public int aminute
{
get { return minute; }
set { minute = value; }
}
public int asecond
{
get { return second; }
set { second = value; }
}
public string now
{
get { return date; }
set { date = value; }
}

public int ayear
{
get { return year; }
set { year = value; }
}
public int amonth
{
get { return month; }
set { month = value; }
}
public int aday
{
get { return day; }
set { day = value; }
}


public string shijianzhuanhuan(string timezone)
{
/*=======================根据差值计算各个时区的小时数=========================*/
int shijian = 0;
if (timezone == "阿布扎比[阿联酋]-4")
{
shijian = ahour - 4;// return shijian;
}
else if (timezone == "亚丁[也门]-5")
{
shijian = ahour - 5;// return shijian;
}
else if (timezone == "安曼[约旦]-6")
{
shijian = ahour - 6;
}
else if (timezone == "安卡拉[土耳其]-6")
{
shijian = ahour - 6;
}
else if (timezone == "曼谷[曼谷]-1")
{
shijian = ahour - 1;
}
else if (timezone == "雅加达[印度]-1")
{
shijian = ahour - 1;
}
else if (timezone == "广州[中国]0")
{
shijian = ahour;
}
else if (timezone == "河内[越南]-1")
{
shijian = ahour - 1;
}
else if (timezone == "伊尔库茨克[俄罗斯]0")
{
shijian = ahour;
}
else if (timezone == "伊斯兰堡[巴基斯坦]-3")
{
shijian = ahour - 3;
}
else if (timezone == "吉隆坡[马来西亚]0")
{
shijian = ahour;
}
else if (timezone == "东京[日本]1")
{
shijian = ahour + 1;
}
else if (timezone == "新加坡[新加坡]0")
{
shijian = ahour;
}
else if (timezone == "柏林[德国]-7")
{
shijian = ahour - 7;
}
else if (timezone == "爱丁堡[英国]-8")
{
shijian = ahour - 8;
}
else if (timezone == "热那亚[意大利]-7")
{
shijian = ahour - 7;
}
else if (timezone == "巴黎[法国]-7")
{
shijian = ahour - 7;
}
else if (timezone == "罗马[意大利]-7")
{
shijian = ahour - 7;
}
else if (timezone == "鹿特丹[荷兰]-7")
{
shijian = ahour - 7;
}
else if (timezone == "纽约[美国]-13")
{
shijian = ahour - 13;
}
else if (timezone == "贝伦[巴西]-11")
{
shijian = ahour - 11;
}
else if (timezone == "多伦多[加拿大]-14")
{
shijian = ahour - 14;
}
else if (timezone == "开罗[埃及]-6")
{
shijian = ahour - 6;
}
else if (timezone == "墨尔本[澳大利亚]2")
{
shijian = ahour + 2;
}
/*=========================判断日期的差值并显示===================================*/
if (shijian > 23) //是否跨天
{
shijian = shijian - 24;
aday = aday + 1;
if (aday > DateTime.DaysInMonth(ayear,amonth))//是否跨月
{
aday = 1;
amonth = amonth + 1;
if (amonth>12) //是否跨年
{
ayear = year + 1;
amonth = 1;
}
}
}
else if (shijian < 0) //是否减少天数
{
shijian = -shijian;
aday = aday - 1;
if (aday == 0) //是否减少月份
{
amonth = amonth - 1;
if (amonth == 0) //是否减少年份
{
ayear = ayear - 1;
amonth = 12;
aday = DateTime.DaysInMonth(ayear, amonth);
}
aday = DateTime.DaysInMonth(ayear, amonth);
}
}
string time =ayear.ToString()+"/"+amonth.ToString()+"/"+aday.ToString()+"/"+"\t\n"+ shijian.ToString() + ":" + aminute.ToString() + ":" + asecond.ToString();
return time;
}
}
}
...全文
184 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小道消息 2011-04-07
  • 打赏
  • 举报
回复
定时器还没启动呢,怎么动态显示呢,还要设置定时器的时间为1000毫秒
Just4life 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kid_wang 的回复:]
没有设置timer的初始时间
没让timer,start
肯定不能动态显示
[/Quote]

+1
另外,要想控件实时显示,最好不要给控件直接赋值,而是按照下面的方式进行

delegate void B(string strText);

private void A(string strText)
{
if (this.textBox1.InvokeRequired)
{
B d = new B(A);
this.Invoke(d, new object[] {strText});
}
else
{
this.textBox1.text = strText;
}
}
结婚兔 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kid_wang 的回复:]

没有设置timer的初始时间
没让timer,start
肯定不能动态显示
[/Quote]

木有开始。。
se7en 2011-04-07
  • 打赏
  • 举报
回复
我建议你用js ,方便又好用
kid_wang 2011-04-07
  • 打赏
  • 举报
回复
没有设置timer的初始时间
没让timer,start
肯定不能动态显示
moonwrite 2011-04-07
  • 打赏
  • 举报
回复
建议把DateTime的成员和方法看一篇

110,500

社区成员

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

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

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