日期及日期控件在開發當中是我們經常要用到。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;
上面是常用的日期有關的技術總結。