简单方法搞定日期格式转换的问题

    程序中经常会用到日期和字符串之间的转换,由于计算机的区域设置(日期格式设置)的不同,会导致在A计算机上运行正确的程序在B计算机上就出问题。如何搞定这些问题?
    字符串–>日期的转换:StrToDate函数,这个函数有两个实现,分别是:
      StrToDate(const S: string): TDateTime
      StrToDate(const S: string;const FormatSettings: TFormatSettings): TDateTime;
      如果我们的字符串格式是固定的话,如yyyy-MM-dd,用第一个的话,会很容易在不同日期格式设置的计算机上出问题。所以要用第二个,但是FormatSettings这个参数怎么设置呢?
      var
        FormatSettings:TFormatSettings;
      ————————————————-
      FormatSettings.ShortDateFormat := ‘yyyy-MM-dd’;   // 这里设置成和字符串中的日期格式一致的格式
      FormatSettings.DateSeparator := ‘-‘;
      FormatSettings.LongDateFormat := ‘yyyy-MM-dd’;    // 这里设置成和字符串中的日期格式一致的格式
      如何保证由日期转换出来的字符串的格式是固定的呢?用 FormatDateTime(‘yyyy-MM-dd’,date);

    日期–>字符串的转换:
      除了上面提到的可以转换成固定格式的字符串外,有时候其实我们是想转换成计算机的缺省日期格式(事先无法知道目标计算机的日期格式,比如说,我们要拼一个SQL语句,这里面的日期格式最好就是和计算机一致的,否则可能会在数据库里进行自动转换成日期的时候出错,这种情况我们只需要用DateToStr(date)就行了。
      顺便说一句,Access数据库中SQL语句里表示日期的话需要前后都加上#,而不是SQL Server等数据库里前后加单引号(自动由字符串转换为日期)。