delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
每次在使用 StrToDate 或 DateToStr 我总是提心掉胆的 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061220141719247.html
每次在使用   StrToDate   或   DateToStr   我总是提心掉胆的  
   
  因为   我的数据是在客户端用   DateToStr   转成   字符串发到服务器的  
   
  服务器再用   StrToDate   转成   TDate   的  
   
  现在没什么问题,   我怕万一客户端的日期格式与服务器不一下,   会转失败的.   如何办呢?  
   
  有没有统一的方法?  
  我知道可以用   FormatDateTime   来生成指定格式的string    
  但如果把这个字符串反变成   TDate   呢?   strtodate   也许是不行的

用   FormatDateTime   转换比较好的,比如FormatDateTime('yyyymmdd',Now());如果是Sql   Server,数据库会自己识别和转换传来的字符串,关系不大。

如果   客户端,服务端都是你做的话  
   
  在程序初始化时都    
   
      ShortDateFormat   :=   'yyyy-mmm....  
      LongDateFormat   :=     'yyyy-mmm....  
   
   
  给这两个全局量给个值,这样日期格式就不由系统设置变了  
   
   
   
 

FormatDateTime   统一标准   例如   2005-09-28   就可以了   楼上踢踏正解!

为什么要转成字符串呢,datetime本来就是浮点型的值,直接传不就行了。

传数值应该比穿字符快!

我必须要把它传成   String   .   系统需要

日期转double,double再转字符串!   用double传数据!  
  到服务器端,字符串转double,double再转日期!

在程序中将日期利用formatdatetime('yyyy-mm-dd',now())  
  这样保证格式能够一致  
  如果用datetostr有时会以字符串中有汉字(我就遇到过)  
  所以我觉得还是   formatdatetime较好

日期转double,double再转字符串!   用double传数据!  
   
  double   转   string   太长了

在程序中将日期利用formatdatetime('yyyy-mm-dd',now())  
  这样保证格式能够一致  
  如果用datetostr有时会以字符串中有汉字(我就遇到过)  
  所以我觉得还是   formatdatetime较好  
  ------------------------  
  关键是   用   formatdatetime('yyyy-mm-dd',now())  
  得到的   String   如何再转成   TDateTime

如果是Sql   Server数据库,传Double型数据不理想的,原因是Sql   Server和Delphi定义的时间起点是不一致的,相差了几天,大家可以自己看看  
  select   convert(datetime,0)       ----》   1900-01-01   00:00:00.000  
  DateTimePicker1.DateTime:=0     ----》   1899-12-30

那就用记录或者列表打包嘛...分别把年月日放到不同的字段里  
  如果是SOAP通信,那就更容易了,直接打成XML包

posted on 2009-01-04 16:51 delphi2007 阅读(329) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。