delphi mysql C# 将double 时间转换为 X天X时:X秒:X分:X秒 XXX毫秒格式

delphi mysql 将double 时间转换为 X天X时:X秒:X分:X秒 XXX毫秒格式

delphi XE10 代码

function TimeMStoStrTime(const iTimeInt:Double; out tempStr: AnsiString): Boolean;
var
iTotals:Integer;
id, ih,imin, iss,ims:Integer;
begin
Result:=False;
tempStr:='';
if iTimeInt>=0 then
begin
iTotals:= Trunc(iTimeInt);
id:= iTotals div 86400; //天
ih:= (iTotals div 3600)-id*24;
imin:= (iTotals div 60)-id*24*60-ih*60;
iss:= iTotals mod 60;
ims:=Round((iTimeInt-itotals)*1000);
if id>0 then
begin
tempStr:=IntToStr(id)+'天';
end;
//ih
case Length(IntToStr(ih)) of
1: tempStr:=tempStr+'0'+inttostr(ih);
2: tempStr:=tempStr+inttostr(ih);
end;
//imin
case Length(IntToStr(imin)) of
1: tempStr:=tempStr+':0'+inttostr(imin);
2: tempStr:=tempStr+':'+inttostr(imin);
end;
//iss
case Length(IntToStr(iss)) of
1: tempStr:=tempStr+':0'+inttostr(iss);
2: tempStr:=tempStr+':'+inttostr(iss);
end;
if ims>0 then
begin
case Length(IntToStr(ims)) of
1: tempStr:=tempStr+' 00'+inttostr(ims);
2: tempStr:=tempStr+' 0'+inttostr(ims);
3: tempStr:=tempStr+' '+inttostr(ims);
end;
end else tempStr:=tempStr+' 000';
Result:=True;
end;
end;

调用:TimeMStoStrTime(1000, sTime)

mysql 代码

CREATE DEFINER=`root`@`localhost` FUNCTION `TimeMStoStrTime`(iTimeInt double) RETURNS varchar(255) CHARSET utf8mb4
NO SQL
COMMENT 'DOUBLE时间转字符串'
begin
#返回值
declare tempStr varchar(255);
declare iTotals int;
declare id, ih,imin, iss,ims,idres int;
set tempStr='';
if (iTimeInt>=0) then
set iTotals=FLOOR(iTimeInt+0.00000001);
set id=iTotals div 86400;#天
set ih=(iTotals div 3600)-id*24;
set imin=(iTotals div 60)-id*24*60-ih*60;
set iss=iTotals mod 60;
set ims=Round((iTimeInt-itotals)*1000);

#return convert(ims,char(3));

if (id>0) then
set tempStr=CONCAT(convert(id,char(5)),'天');
end if;

#ih
if (LENGTH(convert(ih,char(2)))=1) then
set tempStr=CONCAT(tempStr,'0',convert(ih,char(2)));
else
set tempStr=CONCAT(tempStr,convert(ih,char(2)));
end if;

#imin
if (LENGTH(convert(imin,char(2)))=1) then
set tempStr=CONCAT(tempStr,':0',convert(imin,char(2)));
else
set tempStr=CONCAT(tempStr,':',convert(imin,char(2)));
end if;

#iss
if (LENGTH(convert(iss,char(2)))=1) then
set tempStr=CONCAT(tempStr,':0',convert(iss,char(2)));
else
set tempStr=CONCAT(tempStr,':',convert(iss,char(2)));
end if;


if (ims>0) then
if (LENGTH(convert(ims,char(3)))=1) then
set tempStr=CONCAT(tempStr,' 00',convert(ims,char(3)));
elseif (LENGTH(convert(ims,char(3)))=2) then
set tempStr=CONCAT(tempStr,' 0',convert(ims,char(3)));
else
set tempStr=CONCAT(tempStr,' ',convert(ims,char(3)));
end if;
else
set tempStr=CONCAT(tempStr,' 000');
end if;

end if;
return tempStr;

end

调用:select TimeMStoStrTime(100000)/* 返回1天03:46:40 000*/

 

C#代码

#region double时间转换
public bool TimeMStoStrTime(double iTimeInt, out string sMsg)
{
bool bRet = false;
sMsg = string.Empty;
try
{
if (iTimeInt > 0)
{
int iTotals = (int)iTimeInt;
int id = iTotals / 86400;//天
int ih = (iTotals / 3600) - id * 24;//时
int imin = (iTotals / 60) - id * 24 * 60 - ih * 60;//分
int iss = iTotals % 60;//秒
int ims = (int)Math.Round((iTimeInt - iTotals) * 1000, 0);//毫秒
if (id > 0)
{
sMsg = sMsg + Convert.ToString(id) + "天";
}
//时
if (ih > 9)
{
sMsg = sMsg + Convert.ToString(ih);
}
else
{
sMsg = sMsg + "0" + Convert.ToString(ih);
}
//分钟
if (imin > 9)
{
sMsg = sMsg + ":" + Convert.ToString(imin);
}
else
{
sMsg = sMsg + ":0" + Convert.ToString(imin);
}
//秒
if (iss > 9)
{
sMsg = sMsg + ":" + Convert.ToString(iss);
}
else
{
sMsg = sMsg + ":0" + Convert.ToString(iss);
}
//毫秒
if (ims > 0)
{
if (ims > 99)
{
sMsg = sMsg + " " + Convert.ToString(ims);
}
else if (ims > 9)
{
sMsg = sMsg + " 0" + Convert.ToString(ims);
}
else
{
sMsg = sMsg + " 00" + Convert.ToString(ims);
}
}
else
{
sMsg = sMsg + " 000";
}

bRet = true;
}
}
catch (Exception ex)
{
sMsg = "TimeMStoStrTimeException:" + ex.Message;
}
return bRet;
}
#endregion

 

posted on 2024-06-29 09:04  金宝的博客  阅读(48)  评论(0)    收藏  举报

导航