窗体上有两个datetimepicker 分别是st,et 表示开始日期和结束日期。有一个datagridview用于显示数据。数据库用的是sqlite。语句如下:select * from tb where stime>'st.Text' and stime<'et.Text'一般情况下是没有问题的,但是遇到这种情况我就出问题了。有的用户,计算机时间格式改了,自定义了时间格式。比如,他把2011-1-1 显示改为 2011张1三1 。时间原本应该是10:00:00 改成10李00四00 用户众多,每个人都有自己的改法。请问遇到这种情况,我如何操作才能使得以上语句能正确运行。谢谢。
st.Text = dtnow.Year.ToString() + "-" + dtnow.Month.ToString () + "-" + dtnow.Minute.ToString();但st.text还是显示的是 2011张三李四10月1天这样的话,sql语句就不知道该咋写了。
st.Text = dtnow.ToString("yyyy-MM-dd") ;
你不可能只用DateTime.Now,时间是用户输入的,你得保证它的有效性。
st.Text = dtnow.ToString("yyyy-MM-dd") ;这样我试过。不行。datetimepicker还是显示的 2011张三李四10月1天 之类的东西。在提交时,读取 st.Text 还是只能读到 2011张三李四10月1天
不太好解析,你可以把字符串中的数字都选出来然后重新拼接。
比如: string str = "2011张三李四10月1天";
foreach (Char c in str)
{
if (Char.IsNumber(c))
{
Response.Write(c);
}
}
将dateTimePicker1.Text 换成dateTimePicker1.Value.ToString("yyyy-MM-dd")
string str = "20119910919";
换成这样,这个sql语句倒是没有问题了。只是新问题又来了。查询出来结果的datatable中,日期类型的数据全部是"2011张三李四10月1"这样的格式。绑定到datagridview时,日期型的字段,全部出错。请教下,有什么办法能直接获取系统的时间格式后,然后转成标准的时间格式。谢谢了
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", new System.Globalization.CultureInfo("en-us"))
太忽悠人了
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", new System.Globalization.CultureInfo("en-us"))这样试了也是一样的结果。我觉得这个问题应该是出在数据库上。在sqlite中,这个字段是日期型,在插入时虽然是格式化成了 2011-10-1。但他仍然按系统日期的格式"2011张三李四10月1"进行保存了。但我在sqlite中也没有找到如何设置datetime类型的格式。
您要不信,您可以在找一台xp系统,把系统日期格式改一下。然后做一下操作。控制面板-区域和语言选项-区域选项-自定义-日期 修改短日期格式 为 yyyy张三李四MM月d
引用 20 楼 uvvvw 的回复:
插入时我写的是 DateTime.Now.ToString ("yyyy-MM-dd HH:mm:ss")但他写进数据库的就成了 "2011张三李四10月1"这样的了开什么玩笑啊,DateTime.Now会变成张三李四.
太忽悠人了欠扁!!!