日期:2014-05-18  浏览次数:23322 次

datetime中怎么才能只保留日期,不要时分秒
在datetime中用
datetime   riqi=convert.todatetime(txtqi.text);
txtqi.text是控件名是textbox控件,是用calendar控件,将calendar的值付在txtqi上,可是打印出来的时间带时分秒,我不想带时分秒,只想要日期
请指点

------解决方案--------------------
datetime riqi=convert.todatetime(txtqi.text).ToShortDateString()
------解决方案--------------------
convert.todatetime(txtqi.text, "d ");//根据参数
------解决方案--------------------
DateTime.Now.Tostring( "YYYY-MM-DD ")
------解决方案--------------------
为什么一定要只存年月日啊?不重要的话 在取的时候让它变成你想要的格式
------解决方案--------------------
插入数据库就插那种长格式的,string的化就转型成DateTime,但string只能是yyyy-MM-dd之类的形式
显示的时候转换一下,给人看到的是短格式就可以了
方法很多:
.ToShortDateString();
.ToString( "yyyy-MM-dd ");
.ToString( "yyyy/MM/dd ");
都可以
------解决方案--------------------


datetime riqi=convert.todatetime(txtqi.text).ToShortDateString( "t ")
------解决方案--------------------
DateTime riqi = Convert.ToDateTime(t);
riqi = new DateTime(riqi.Year, riqi.Month, riqi.Day);
兄弟这个也不好用还是有时分秒

=========================================

我想你存在着误区。DateTime本身就是表示时间的一个类,它包括了“Date”和“Time”两部分,当然“必须”包括年、月、日、时、分、秒、毫秒这几个数据,数据库内的DateTime也一样。不然按你说的,在这里不要时分秒,那里不要年月日,就无法统一了。所谓只取年月日,意味着将这个DateTime的时分秒全部置0,这样在插入数据库的时候,就会发现数据的时、分、秒全部为0,这样就可以进行数据比较了。你进行数据库查询的时候,看到的并不是“DateTime”,而是“string”,要注意,我们的眼睛只可以看到string数据,所以当我们要知道一个DateTime数据,就必须将它设定一个显示的格式。所以,如果你指定查询语句为
select convert(varchar(20),MyDateTime,101) from MyTable,你会发现只有年月日显示出来了。

第2个问题:如何只比较“时分秒”,可以用下列比较法
DateTime d = DateTime.Now;
d = new DateTime(MyDateTime.Year, MyDateTime.Month, MyDateTime.Day,
d.Hour, d.Minute, d.Second);
TimeSpan t = d.Subtract(MyDateTime);
if (t.Ticks <0)
{
// 当前时间在MyDateTime时间之前
}
else
{
// 当前时间在MyDateTime时间之后
}
------解决方案--------------------
我说个笨方法,用函数一个一个把年月日截取出来

string year = DateTime.Now.Year.ToString();
string month = DateTime.Now.Month.ToString();
string day = DateTime.Now.Day.ToString();

其实前面说的也可以
------解决方案--------------------
大家都误会楼主的意思了,楼主只想要个只有年月日的时间格式变量,好复制给DateTime类型的参数,插入到数据库中,楼主看我的:

DateTime riqi = Convert.ToDateTime(Convert.ToDateTime(txtqi.text).ToShortDateString() + "00:00 ");