每次在使用 StrToDate 或 DateToStr 我总是提心掉胆的

本文讨论了在客户端和服务端之间传输日期数据时,如何避免因日期格式不同而导致的问题。提出了使用FormatDateTime函数统一日期格式的方法,并探讨了直接传输浮点型日期值的优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每次在使用 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包

转载于:https://www.cnblogs.com/delphi2007/archive/2009/01/04/1368312.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值