请问下大家是怎么处理类似
"2017/12/11/周一"这种格式的字符串为DateTime类型的;
Convert.ToDateTime();这个方法只能转换"YYYY-mm-DD HH-MM-ss"这种格式。
是从数据库里取出来的数据,带着周一,周二这种,而我又要判断日期是否大于某个日期。
非显示数据尽量不让这种事发生 —— 中间或存储一律long or int(timestamp时选择);用字符串记时间的如果不是做爬取的,那是相当不专业的。至于显示,ymd等等,成员及格式化都封装的很好了,想怎么显示就怎么显示。
数据库是oracle,数据类型是Date,从数据库取出来的格式就是这样。
@.NET小码农: 数据库存储可以说就是long或者int之类的整形(定长),不然你想想干嘛要搞个类型,很明显不可能用char*来存储,不利于计算更不利于存储(费时费事费空间);你所谓的DateTime是程序转化的而已,而且DateTime的基础是long(Ticks),你可以看到有基于这个的构造函数。为什么我强调timestamp,因为目前几乎所有的计算机都认这个,不认也很容易转换,因为整形计算是芯片最最基础的指令。如果整个环节的都是可控的,你应当恰当使用整形。
@花飘水流兮: 谢谢啦,问题在于我PLSQL和本地计算机的日期显示格式没设置好,导致时间格式自动转换为"yyyy/mm/dd/ddd"这种带着星期格式的字符串。
Convert.ToDateTime(datetime).ToString("yyyy-MM-dd");
谢谢哈,这个我知道。
string dateString = "20161010";
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
--------yyyyMMdd可以自定义格式
字符串截取后转为DateTime类型,再比较大小
z这个我知道,问题在于,取出来的数据带着周一,周二这些。
用楼上所说的 DateTime.ParseExact 指定格式转化啊,
既然你说数据带着周一,周二,那么你存这个datatime的时候也指定格式啊,
用这个ParseExact 方法的目的不就是你知道他的格式,所以这个格式转换吗
k谢谢了。问题解决了,取值出错了。
“2017/12/11/周一”先把“周一”这个文字截取去掉,去取得“2017/12/11/”然后在去比较日期
e嗯,这个方法想过,不过我的问题出现在在从数据库取值时出错了。还是谢谢了。
@.NET小码农:
什么数据库?sqlserver还是oracle还是mysql
@琴声: orcle,用的可视化界面是PLSQL