如何将长日期格式转化为短日期格式?(100分)

  • 主题发起人 主题发起人 deamod
  • 开始时间 开始时间
D

deamod

Unregistered / Unconfirmed
GUEST, unregistred user!
即将类似'2000年3月27日'转化为'00-3-27',反之问题仍然成立。
100大分拱手奉上!
 
反之可能不会成立,因为00可以是1800,1900,2000,2100
当然用TDateTimePicker则都能成立
 
1. '2000年3月27日'---->'00-3-27'

function MyFunc1(ADate:string):string;
var
i:integer;
begin
LongDateFormat:='yyyy/mm/dd';
ShortDateFormat:='yyyy/mm/dd';
DateSeparator:='/';
Result:=ADate;
i:=Pos('日',Result);
Result:=System.Copy(Result,1,i-1);
i:=Pos('月',Result);
System.Delete(Result,i,2);
System.Insert('/',Result,i);
i:=Pos('年',Result);
System.Delete(Result,i,2);
System.Insert('/',Result,i);
Result:=FormatDateTime('yy-mm-dd',StrToDate(Result))
end;


2.'00-3-27'---->'2000年3月27日'

function MyFunc2(ADate:string):string;
begin
LongDateFormat:='yy-mm-dd';
ShortDateFormat:='yyyy-mm-dd';
DateSeparator:='-';
Result:=FormatDateTime('yyyymmdd',StrToDate(ADate));
System.Insert('日',Result,9);
System.Insert('月',Result,7);
System.Insert('年',Result,5);
end;

 
Sorry.错了一点点:

2.'00-3-27'---->'2000年3月27日'

function MyFunc2(ADate:string):string;
begin
LongDateFormat:='yy-mm-dd';
ShortDateFormat:='yy-mm-dd';
DateSeparator:='-';
Result:=FormatDateTime('yyyymmdd',StrToDate(ADate));
System.Insert('日',Result,9);
System.Insert('月',Result,7);
System.Insert('年',Result,5);
end;
 
edit1.text:='1900年03月27日'
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:=MyFunc1(Edit2.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit2.text:=Myfunc2(Edit1.Text);
end;

先点Button1,再点Button2,成了2000年...,呵呵

我看最好用一个TDateTime变量来记录日期,根据需要转换
 
kang:
呵呵。这就是2000年问题嘛!!!
 
将当前时间转换为如‘2000年03月28日’的形式。
FormatDateTime("yyyy"年"mm"月"dd"日,Date)
将当前时间转换为如‘00-3-27’的形式。
FormatDateTime("yy"-"m"-"d",Date)
StrToDateTime()可将string转换成TDateTime
 
将上面的函数简化,谢谢springm的提示。

第二个函数可以简化一下:

function MyFunc2(ADate:string):string;
begin
LongDateFormat:='yy-mm-dd';
ShortDateFormat:='yy-mm-dd';
DateSeparator:='-';
Result:=FormatDateTime('yyyy''年''mm''月''dd''日''',StrToDate(ADate));
end;
 
总之是自编函数,多谢了……
 
有一个简单的办法呀
function TransDate(ALongDate: String): String;
var
ADate: TDateTime;
begin
ADate := StrToDate(ALongDate);
Result := DateToStr(ADate);
end;
 
我有一个处理日期,时间的函数库,要不要,e-mail 我
 
不好意思,好久不来了,把该分的分分了吧。
 
多人接受答案了。
 
后退
顶部