C++Builder 程序员博客
4 Dec
dephi中TryStrToDateTime 怎样在C++Builder中实现?
判断一个字符串是否能转成日期类型的数据,不用IsDateTime类的try()…catch()函数,怎么写呢?
这样有问题的!
我只要知道这个字符串能不能转换成时间类型?
StrToDateTime("…"); 一旦转换不行,系统会报错,我不需要系统报错!
//头文件SysUtils AnsiString str = "2008-12-02 14:20:00"; TDateTime stime; if (TryStrToDateTime(str , stime)) { ShowMessage("YES"); } else { ShowMessage("NO"); }
没人会?
TDateTime date = Now();
bool flag = TryStrToDateTime("2008/11/11", date);
ShowMessage(BoolToStr(flag));
ShowMessage(DateTimeToStr(date));
然後去抓flag值
如果flag為true 則轉化成功 date就是now的值
如果flag為false 轉化失敗 date為默認值2008/11/11
TDateTime date = Now();
bool flag = TryStrToDateTime("2008/11/11", date);
if(flag)
{
ShowMessage("OK"); //轉換完成 此時date為2008/11/11
}
else
{
ShowMessage("error"); //轉換完成 此時date為Now()的值
}
C++builder中没有TryStrToDateTime????????????
我找不到函数TryStrToDateTime,出错啦
TDateTime date = Now();
bool flag = TryStrToDateTime("2008/11/11", date);
if(flag)
{
ShowMessage("OK"); //轉換完成 此時date為2008/11/11
}
else
{
ShowMessage("error"); //轉換完成 此時date為Now()的值
}
這個就是bcb裏的用法阿
编译时出错,没有TryStrToDateTime这个函数
#include "SysUtils.hpp"
刚才都提醒你头文件了……
#include <SysUtils.hpp>
加这个看一下
c++builder5.0中没有这个函数,怎么解决?
在bcb6.0中 其實是不需要#include <SysUtils.hpp>這句的
如果你用的是bcb 5.0可以看看幫助文件 看SysUtils.hpp是否有TryStrToDateTime這個函數
delphi裏有的bcb裏應該會有的
如果實在不行
那就用try catch去判斷一下
bcb 5.0中SysUtils.hpp没有TryStrToDateTime這個函數
bcb 6.0中SysUtils.hpp有TryStrToDateTime這個函數
在bcb 5.0中使用try catch 有问题,StrToDateTime会自动调用出错信息的
那就找个BCB6.0的SysUtils.hpp去覆盖掉。
做好5.0中原先SysUtils.hpp的备份,出问题再换上去。
你說的調用try catch有問題是在調試狀態下跑的吧
如果只運行exe是不會出那個錯誤信息的 這個你可以試一下
另外 如果你是在不想用try catch 又沒有trystrtodatetime這個函數, 又不想出異常
那
TDateTime dt = StrToDateTime("1900-01-01"); //這個日期應該沒有人用吧
if(StrToDateDef("xxxx-xx-xx",dt) != dt)
{
}
else
{
}
StrToDateDef這個函數是把xxxx-xx-xx轉成日期類型 如果不成功就設置成default值"1900-01-01"所以在轉好后判斷是否被強制轉成了"1900-01-01"就可以知道結果了
//如果有StrToDateTime 可以自己模仿写个TryStrToDateTime呀 //在IDE里面测试,如果遇到不能转为DateTime的字符串,本函数还是爆出异常的 //在外面运行就不会了 bool TryStrToDateTime(AnsiString &strDateTime,TDateTime& datetime) { bool bResult = false; try { datetime =StrToDateTime(strDateTime); bResult = true; } catch(…) { // ……. } return bResult ; //返回false 表示转换未成功 }
bcb 5.0中没有StrToDateDef这个函数,呜呜。。。
哭什么哭,以上那么多解决方案为什么不试试。喊着没有就解决问题了?
沒有用過bcb 5.0
這些函數都沒有?
那建議你還是用try catch吧 其實挺好用的 不要在調試狀態下跑 直接跑exe是不會出異常的
如果還是不想用
那建議你自己寫個判斷吧判斷一個字符串是否是日期 或者直接安裝bcb 6.0