日期及日期控件在开发当中是我们经常要用到。mobile6.5中可用的日期有2个:DateTimePicker 和 MonthCalender 一个可以日期下拉选择,一个是月历控件直接展示。
1 日期的保存,实战应用是对日期的格式化成想要的字符串。如:yyyyMMdd 或 yy-MM-dd等
//数据库表的末次月经字段LastDay 最好保存成“20100601” 格式,则需要这样处理
//注意yyyyMMdd 和 20100601 格式是必须对应的,否则写成yyyy-MM-dd 就会出错:“未处理 System.FormatException Message="FormatException"”
DateTime dt = Convert.ToDateTime(mumLastDate);
sql = "update [user] set LastDay='" + dt.ToString("yyyyMMdd") +
"',Station='1'" +
//创建时间保存
DateTime now = DateTime.Now;
myUser.CrTime = now.ToString("yyyyMMddHHmmss");
2 日期的读取与显示
//Mobile手机短日期:注意有2种格式yy-M-d(默认) 和 yy-MM-dd ,当然可以设置的。我们需要考虑到2种格式,统一格式不能只是取系统日期而不做处理,否则日期比较会出错。
//通常要用到日期控件DateTimePicker的ValueChanged方法
private void dateTimeBaby_ValueChanged(object sender, EventArgs e)
{
if (this.radioNewMa.Checked == true)
{
//短日期:有2种格式yy-M-d(默认) 和 yy-MM-dd
DateTime dtBabyBirthday = dateTimeBaby.Value;
String babyBirthdayString = dtBabyBirthday.ToString("yy-MM-dd");
this.txtBabyBirthday.Text = babyBirthdayString;
}
}
// 读取并显示末次月经时间。
IFormatProvider culture = new System.Globalization.CultureInfo("zh-CN", true);
DateTime crTime = DateTime.ParseExact(myuser.LastDay, "yyyyMMdd", culture);
this.dateTimeLastDay.Value = crTime;
this.txtLastDay.Text = crTime.ToString("yy-MM-dd");
// 时间
String srcTimeStr = measure.MTime;
IFormatProvider culture = new System.Globalization.CultureInfo("zh-CN", true);
DateTime dt = DateTime.ParseExact(srcTimeStr, "yyyyMMddHHmmss", culture);
String destTimeStr = dt.ToString("yyyy-MM-dd HH:mm:ss");
this.lbTime.Text = String.Format("{0}", destTimeStr);
3 日期的比较,主要使用TimeSpan 的方法Subtract Duration求出2个日期间隔时间。
IFormatProvider culture = new System.Globalization.CultureInfo("zh-CN", true);
User.User myuser = new User.User();
myuser = User.User.findUser();
DateTime dt1 = System.DateTime.Now; //当天时间
DateTime dt2 = new DateTime(); //末次月经时间
dt2 = DateTime.ParseExact(myuser.LastDay.ToString(), "yyyyMMdd", culture);
TimeSpan ts1 = new TimeSpan(dt1.Ticks);
TimeSpan ts2 = new TimeSpan(dt2.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
int i = ts.Days / 30;
int d = ts.Days % 30;
if (d == 0)
{ this.statusBar1.Text = "怀孕" + i.ToString() + "个月了"; }
else
{ this.statusBar1.Text = "怀孕" + i.ToString() + "个月又" + d.ToString() + "天了"; }
User.User._Month = i + 1;
int w = ts.Days / 7;
User.User._Flag_Mum = "1";
if(w<40)
User.User._Week = w+1;
if (w >= 40)
User.User._Week = 40;
上面是常用的日期有关的技术总结。