计算机日期格式设置有误导致U盘不正常
(创建时间:2010年01月15日 19:37:00)
Jangogo : 
当用户更改了 计算机的 系统的日期或者时间的格式后,例如把格式改成 yyyy-mm-dd-dddd
出现的日期格式就会是  2010-01-15-星期五 这样的格式,类似还有  2010-01-15 下午 15:82:23 等格式
这一类的格式 当数据进行处理时,SC无法由字符串转换为正确的时间,SC是依赖VBScript的,查看微软的相关技术文档得知,微软说这是“设计使然”,
即如果采用 Date() 或者 Now() 等时间函数或者在数据库里面读取日期时间字段如果返回时间的时候转换为字符串,系统都会以本地计算机的国别区域设置的格式进行格式化。
当进行程序处理的时候就会因为无法分析正确的时间而导致程序出错。

解决方法:在2010年1月15日,我们更新了SC核心组件:PAZU,升级了内置的SC处理程序,增加了一个函数:
DFF_(mydate) 来格式化日期时间,必须注意的是:
1.mydate必须是日期时间类型,如果是字符串类型就可能因为本身传入的字符串已经是错误的而导致错误,例如:
   DFF_(now())  这是正确的
   DFF_( "" & now()) 或者 DFF_(cstr(now())) 这样可能是错误的,原因:日期时间类型的数据已转换为字符串就会引发错误的格式化转换

2.请更新你代码调用DFF_函数来处理时间问题,强烈建议您用于开发计算机把国别区域设置更改为  yyyy-mm-dd-dddd 的日期格式以方便您再编码的时候就记得去处理日期格式而引发的问题。
   这样才能保证用户无论在何种日期时间格式下都能是程序正确运行

3.以往的代码必须进行更改,实例:
 
  1. rs.open "select [mydatefield] from testtable",cn   
  2.   if not rs.eof then   
  3.     d1=DFF_(rs("mydatefield"))   
  4.   end if   
  5.   rs.close   
  6.   
  7. '又如:   
  8. 'accounting.report.sc   
  9. '返回的日期字段必须这样做一下处理才能正常   
  10. s2=  DFF_(GetOneVL_("select enddate from accperiod where period='" &  p2 & "'",False))   
  11. 'd=cdate(s2)  这样就不会错, 如果没有DFF_这句就会出错   
  12.   

另外要注意:更改后的代码只能在新的平台下运行,因为原来的平台没有DFF_函数,会出错。因此更改编译后的代码不要上传到现在的ASP版本的在线版上。
原有版本只能通过更改用户计算机的国别区域设置来解决
文档中心