请教高手,关于不规范字符串转换成日期格式的问题(200)

  • 主题发起人 主题发起人 cqjoe
  • 开始时间 开始时间
C

cqjoe

Unregistered / Unconfirmed
GUEST, unregistred user!
许多用户报来的Excel电子表格,日期填写的格式不规范,主要有4种(都是string):2010年6月18日、2010年06月18日,或者2010-6-18、2010-06-18。如何把它们转换成日期格式存入Access数据库? 指点最好提供源代码。感谢以下2位朋友,我主要想知道如何判断Excel中4种时间格式,然后将不同格式转换为统一格式再导入Access库日期字段中。Excel的4种时间格式,有:2010年6月18日、2010年06月18日,或者2010-6-18、2010-06-18。
 
不需要转的吧,不知道你是怎么导的,只要是在excel单元格是正规的输入"xxxx年xx月xx日"或是"xxxx/xx/xx"等形式的正规日期格式导入到access时是不需要转换的,我刚做了测试eee.xls文件如下:日期1 日期2 名字2010-6-10 2010年6月18日 标标2010-6-11 2010年9月3日 标枪在access中执行查询后结果如下:日期1 日期2 名字2010-6-10 2010-6-18 标标2010-6-11 2010-9-3 标枪数据库结构如下:字段名称 数据类型日期1 日期/时间日期2 日期/时间名字 文本导入语句: SELECT * INTO bbb FROM [excel 8.0;database=e:/eee.xls].[sheet1$];
 
procedure TForm1.FormCreate(Sender: TObject);var datestr:string;//一定要用Var,不能是const datevalue:Tdate; temp:string;begin datestr:='2010年6月18日'; datestr:=StringReplace(datestr,'年','-',[rfReplaceAll]); datestr:=StringReplace(datestr,'月','-',[rfReplaceAll]); datestr:=StringReplace(datestr,'日','',[rfReplaceAll]); datevalue:=strtodate(datestr); //DateTimePicker1.Date:=datevalue; //往数据库的字段里写不就行了end;
 
感谢以上2位朋友,我主要想知道如何判断Excel中4种时间格式,然后将不同格式转换为统一格式再导入Access库日期字段中。Excel的4种时间格式,有:2010年6月18日、2010年06月18日,或者2010-6-18、2010-06-18。
 
主要想知道如何判断Excel中4种时间格式?这个知道有什么用么?将不同格式转换为统一格式的话:我个人十分赞同xiebaotong的方法以下是本人的笨方法StrDate:string;strYear,strMonth,strDay:string;iFlag:int;jFlag:int;jFlag:=0;if(strDate[strDate.length-1] 不是0-9的字符) strDate := copy(strDate,0,strDate.length-2);for iFlag := 0 to StrDate.lengthbegin if(strDate[iFlag] 不是0-9的字符) begin if(jFlag =0) begin strYear :=copy(strDate,0,iFlag-1); jFlag := iFlag+1; end else begin strMonth :=copy(strdate,jFlag,iFlag-1); jFlag := iFlag+1; break; end; iFlag++; Endend//End ForstrDay :=copy(strDate,jFlag,strDate.length-1);现在你想组合成什么格式就可以组合成什么格式了
 
后退
顶部