11 个解决方案
#1
用formatdatetime('这里日期时间的格式',这里日期时间) 日期格式化函数来搞定
#2
楼主分是不是很多呀
#3
不是,我是需要将字符串 “0012005100711304000003722018"中的20051007113040中的年月日时间转入到SQL中,我的转换语句为: FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+'/'+Copy(TemDate,5,2)+'/'+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+':'+Copy(TemDate,11,2)+':'+Copy(TemDate,13,2);
程式执行时只有当我将系统时间格式设置为2005/10/27格式时方可正确执行,其他两种方式则报错,我如何将系统时间格式由2005-10-27或2005.10.27格式设置成为2005/10/27格式. 谢谢
程式执行时只有当我将系统时间格式设置为2005/10/27格式时方可正确执行,其他两种方式则报错,我如何将系统时间格式由2005-10-27或2005.10.27格式设置成为2005/10/27格式. 谢谢
#4
希望通过API解决---如果可以的话!我找到资料输入下列代码依然无效
//得到當前系統默認時區的日期
procedure GetDateFormat;
var
sFormatDate:String;
begin
SetLength(sFormatDate,17);//中文時區
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,PChar(sFormatDate),17);
end;
//設置系統日期格式為yyyy-mm-dd
procedure SetDateFormat;
begin
SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, PChar('yyyy-mm-dd'));
end;
//得到當前系統默認時區的日期
procedure GetDateFormat;
var
sFormatDate:String;
begin
SetLength(sFormatDate,17);//中文時區
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,PChar(sFormatDate),17);
end;
//設置系統日期格式為yyyy-mm-dd
procedure SetDateFormat;
begin
SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, PChar('yyyy-mm-dd'));
end;
#5
倒,问问题要说清楚,还藏着掖着的,烦
#6
大哥误会了
#7
通过注册表读取 系统日期格式(分隔符)
uses
Registry;
var
reg: TRegistry;
sDate, sTime: string;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
if reg.OpenKey('\Control Panel\International\', False) then
begin
sDate := reg.ReadString('sDate');
sTime := reg.ReadString('sTime');
end;
end;
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+'/'+Copy(TemDate,5,2)+'/'+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+':'+Copy(TemDate,11,2)+':'+Copy(TemDate,13,2);
改为
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+sDate+Copy(TemDate,5,2)+sDate+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+sTime+Copy(TemDate,11,2)+sTime+Copy(TemDate,13,2);
uses
Registry;
var
reg: TRegistry;
sDate, sTime: string;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
if reg.OpenKey('\Control Panel\International\', False) then
begin
sDate := reg.ReadString('sDate');
sTime := reg.ReadString('sTime');
end;
end;
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+'/'+Copy(TemDate,5,2)+'/'+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+':'+Copy(TemDate,11,2)+':'+Copy(TemDate,13,2);
改为
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+sDate+Copy(TemDate,5,2)+sDate+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+sTime+Copy(TemDate,11,2)+sTime+Copy(TemDate,13,2);
#8
我看懂下面代码,请高手明示:
july:试试看下面的范例:
Unit1.h档
private: // User declarations
AnsiString __fastcall GetsysShortDateFormat();
AnsiString __fastcall GetsysLongDateFormat();
Unit1.cpp档
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text=GetsysShortDateFormat(); // 目前系统短日期格式
Edit2->Text=GetsysLongDateFormat(); // 目前系统长日期格式
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::GetsysShortDateFormat()
{
// 目前系统短日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SSHORTDATE ,sgs.c_str(),12);
return sgs;
}
AnsiString __fastcall TForm1::GetsysLongDateFormat()
{
// 目前系统长日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,sgs.c_str(),12);
return sgs;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// 更改短日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, str.c_str()))
ShowMessage("更改短日期格式成功");
Edit1->Text=GetsysShortDateFormat();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
// 更改长日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, str.c_str()))
ShowMessage("更改长日期格式成功");
Edit2->Text=GetsysLongDateFormat();
}
yyyy/MM/dd 也可以 yyyy-MM-dd 看你高兴。
请参考!
july:试试看下面的范例:
Unit1.h档
private: // User declarations
AnsiString __fastcall GetsysShortDateFormat();
AnsiString __fastcall GetsysLongDateFormat();
Unit1.cpp档
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text=GetsysShortDateFormat(); // 目前系统短日期格式
Edit2->Text=GetsysLongDateFormat(); // 目前系统长日期格式
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::GetsysShortDateFormat()
{
// 目前系统短日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SSHORTDATE ,sgs.c_str(),12);
return sgs;
}
AnsiString __fastcall TForm1::GetsysLongDateFormat()
{
// 目前系统长日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,sgs.c_str(),12);
return sgs;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// 更改短日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, str.c_str()))
ShowMessage("更改短日期格式成功");
Edit1->Text=GetsysShortDateFormat();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
// 更改长日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, str.c_str()))
ShowMessage("更改长日期格式成功");
Edit2->Text=GetsysLongDateFormat();
}
yyyy/MM/dd 也可以 yyyy-MM-dd 看你高兴。
请参考!
#9
呵呵一个问题,到处发贴
#10
zsjzwj(北极熊)是正确的!
#11
我看不懂上面代码,请高手明示:
#1
用formatdatetime('这里日期时间的格式',这里日期时间) 日期格式化函数来搞定
#2
楼主分是不是很多呀
#3
不是,我是需要将字符串 “0012005100711304000003722018"中的20051007113040中的年月日时间转入到SQL中,我的转换语句为: FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+'/'+Copy(TemDate,5,2)+'/'+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+':'+Copy(TemDate,11,2)+':'+Copy(TemDate,13,2);
程式执行时只有当我将系统时间格式设置为2005/10/27格式时方可正确执行,其他两种方式则报错,我如何将系统时间格式由2005-10-27或2005.10.27格式设置成为2005/10/27格式. 谢谢
程式执行时只有当我将系统时间格式设置为2005/10/27格式时方可正确执行,其他两种方式则报错,我如何将系统时间格式由2005-10-27或2005.10.27格式设置成为2005/10/27格式. 谢谢
#4
希望通过API解决---如果可以的话!我找到资料输入下列代码依然无效
//得到當前系統默認時區的日期
procedure GetDateFormat;
var
sFormatDate:String;
begin
SetLength(sFormatDate,17);//中文時區
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,PChar(sFormatDate),17);
end;
//設置系統日期格式為yyyy-mm-dd
procedure SetDateFormat;
begin
SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, PChar('yyyy-mm-dd'));
end;
//得到當前系統默認時區的日期
procedure GetDateFormat;
var
sFormatDate:String;
begin
SetLength(sFormatDate,17);//中文時區
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,PChar(sFormatDate),17);
end;
//設置系統日期格式為yyyy-mm-dd
procedure SetDateFormat;
begin
SetLocaleInfoa(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, PChar('yyyy-mm-dd'));
end;
#5
倒,问问题要说清楚,还藏着掖着的,烦
#6
大哥误会了
#7
通过注册表读取 系统日期格式(分隔符)
uses
Registry;
var
reg: TRegistry;
sDate, sTime: string;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
if reg.OpenKey('\Control Panel\International\', False) then
begin
sDate := reg.ReadString('sDate');
sTime := reg.ReadString('sTime');
end;
end;
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+'/'+Copy(TemDate,5,2)+'/'+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+':'+Copy(TemDate,11,2)+':'+Copy(TemDate,13,2);
改为
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+sDate+Copy(TemDate,5,2)+sDate+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+sTime+Copy(TemDate,11,2)+sTime+Copy(TemDate,13,2);
uses
Registry;
var
reg: TRegistry;
sDate, sTime: string;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
if reg.OpenKey('\Control Panel\International\', False) then
begin
sDate := reg.ReadString('sDate');
sTime := reg.ReadString('sTime');
end;
end;
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+'/'+Copy(TemDate,5,2)+'/'+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+':'+Copy(TemDate,11,2)+':'+Copy(TemDate,13,2);
改为
FieldByName('icdatetime').AsString:=Copy(TemDate,1,4)+sDate+Copy(TemDate,5,2)+sDate+Copy(TemDate,7,2)+' '+Copy(TemDate,9,2)+sTime+Copy(TemDate,11,2)+sTime+Copy(TemDate,13,2);
#8
我看懂下面代码,请高手明示:
july:试试看下面的范例:
Unit1.h档
private: // User declarations
AnsiString __fastcall GetsysShortDateFormat();
AnsiString __fastcall GetsysLongDateFormat();
Unit1.cpp档
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text=GetsysShortDateFormat(); // 目前系统短日期格式
Edit2->Text=GetsysLongDateFormat(); // 目前系统长日期格式
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::GetsysShortDateFormat()
{
// 目前系统短日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SSHORTDATE ,sgs.c_str(),12);
return sgs;
}
AnsiString __fastcall TForm1::GetsysLongDateFormat()
{
// 目前系统长日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,sgs.c_str(),12);
return sgs;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// 更改短日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, str.c_str()))
ShowMessage("更改短日期格式成功");
Edit1->Text=GetsysShortDateFormat();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
// 更改长日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, str.c_str()))
ShowMessage("更改长日期格式成功");
Edit2->Text=GetsysLongDateFormat();
}
yyyy/MM/dd 也可以 yyyy-MM-dd 看你高兴。
请参考!
july:试试看下面的范例:
Unit1.h档
private: // User declarations
AnsiString __fastcall GetsysShortDateFormat();
AnsiString __fastcall GetsysLongDateFormat();
Unit1.cpp档
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text=GetsysShortDateFormat(); // 目前系统短日期格式
Edit2->Text=GetsysLongDateFormat(); // 目前系统长日期格式
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::GetsysShortDateFormat()
{
// 目前系统短日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SSHORTDATE ,sgs.c_str(),12);
return sgs;
}
AnsiString __fastcall TForm1::GetsysLongDateFormat()
{
// 目前系统长日期格式
AnsiString sgs;
sgs.SetLength(12);
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLONGDATE ,sgs.c_str(),12);
return sgs;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// 更改短日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, str.c_str()))
ShowMessage("更改短日期格式成功");
Edit1->Text=GetsysShortDateFormat();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
// 更改长日期格式
AnsiString str;
str = "yyyy/MM/dd"; // 要更改的格式
if (SetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, str.c_str()))
ShowMessage("更改长日期格式成功");
Edit2->Text=GetsysLongDateFormat();
}
yyyy/MM/dd 也可以 yyyy-MM-dd 看你高兴。
请参考!
#9
呵呵一个问题,到处发贴
#10
zsjzwj(北极熊)是正确的!
#11
我看不懂上面代码,请高手明示: