一直没太仔细的看这个时间获取问题,因为每次都成功的获取了一些东西并且填充在相应的数据库字段中,今天把这个字段伸展开,发现了这么一个哭笑不得的问题。
完了,不认真,所以所有有关获取日期时间的字段都是这个问题。开始解决吧。
观察得知,月份和分钟保持高度的一致,原来问题再这儿。查看代码,
worklogentity.LoginTime = Format(Now, "yyyy-mm-dd hh:mm:ss")
我试了试,将日期改为大写的MM,这就成功了;然后想着应该标出“PM”或者用24小时制的,于是又尝试将小时改成“HH”,结果又成功了。
worklogentity.LoginTime = Format(Now, "yyyy-MM-dd HH:mm:ss")
真真是歪打正着啊。
第一版机房的时候,日期和时间是分开的,所以没出现这个问题,既然遇到了就好好查查吧。
1、时间格式:
“HH”是24小时制的,“hh”是12小时制的,“MM”是月份,“mm”是分钟。
“H”是1个字符的,如1:50,“yyyy”指的是“2015”,“yy”指的是“15”,其他同理。
2、时间段的获取:
①单纯的年月日或者时分秒比较简单,直接获取就可以了
③年月日 时分秒:
Dim time As TimeSpan '定义类型为TimeSpan类型的变量,表示获取的时间差,格式为 时:分:秒
Dim logintime As System.DateTime '定义类型为DateTime的时间变量,将实体中上机时间获取并转换成DateTime类型
logintime = DateTime.Parse(linelogentity.LoginTime)
'将两个时间做差,获取时间段time
time = logintime.Subtract(DateTime.Now) 'DateTime.Now表示DateTime类型的当前时间,即下机时间
txtSpendTime.Text = time.Duration.TotalMinutes.ToString() '将时间差转换为分钟形式,赋值给文本框
txtSpendTime.Text = CInt(txtSpendTime.Text) '将文本框中的数据取整
linelogentity.SpendTime = txtSpendTime.Text '将最终结果传给实体层
3、用DateTimePicker控件查询日期
一定要注意格式的一致性。我的数据库设置的是yyyy-MM-dd HH:mm:ss的,所以从DateTimePicker控件中获取然后传给实体层的也必须是这个格式的,具体格式转换代码如下:
'从Datetimepicker控件中获取的日期的格式设置为数据库中的格式“yyyy-MM-dd”
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "yyyy-MM-dd"
DateTimePicker2.Format = DateTimePickerFormat.Custom
DateTimePicker2.CustomFormat = "yyyy-MM-dd"
'将DateTimePicker中的数据传给实体层
rechargelogentity.Time = DateTimePicker1.Text
rechargelogentity.EndTime = DateTimePicker2.Text
小结:
时间这块儿的问题主要就是一致,从U层取得数据的格式和存到数据库中的格式保持一致就可以了,当然一些关于时间的基本知识也是必须了解的。推荐以下博客:
http://blog.csdn.net/mazhaojuan/article/details/7216880