请选择 进入手机版 | 继续访问电脑版

无忧编程_ASP.NET  / C# / PHP 程序员的软件世界

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 174|回复: 0

C# 秒数转日期_由秒数得到日期几天几小时几分几秒_当前日期时间,转换为秒

[复制链接]

259

主题

286

帖子

1159

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1159
发表于 2017-7-26 16:59:11 | 显示全部楼层 |阅读模式
C# 秒数转日期_由秒数得到日期几天几小时几分几秒_当前日期时间,转换为秒
[C#] 纯文本查看 复制代码
///<summary>
///由秒数得到日期几天几小时。。。
///</summary
///<param name="t">秒数</param>
///<param name="type">0:转换后带秒,1:转换后不带秒</param>
///<returns>几天几小时几分几秒</returns>
public static string parseTimeSeconds(int t, int type)
{
string r = "";
int day, hour, minute, second;
if (t >= 86400) //天,
{
day = Convert.ToInt16(t / 86400);
hour = Convert.ToInt16((t % 86400) / 3600);
minute = Convert.ToInt16((t % 86400 % 3600) / 60);
second = Convert.ToInt16(t % 86400 % 3600 % 60);
if (type == 0)
r = day + ("day") + hour + ("hour") + minute + ("minute") + second + ("second");
else
r = day + ("day") + hour + ("hour") + minute + ("minute");

}
else if (t >= 3600)//时,
{
hour = Convert.ToInt16(t / 3600);
minute = Convert.ToInt16((t % 3600) / 60);
second = Convert.ToInt16(t % 3600 % 60);
if (type == 0)
r = hour + ("hour") + minute + ("minute") + second + ("second");
else
r = hour + ("hour") + minute + ("minute");
}
else if (t >= 60)//分
{
minute = Convert.ToInt16(t / 60);
second = Convert.ToInt16(t % 60);
r = minute + ("minute") + second + ("second");
}
else
{
second = Convert.ToInt16(t);
r = second + ("second");
}
return r;
}

/// <summary>
/// 当前日期时间,转换为秒
/// </summary>
/// <returns>秒数</returns>
public static string xDateSeconds()
{
long xdateseconds = 0;
DateTime xdatenow = DateTime.UtcNow; //当前UTC时间


long xminute = 60; //一分种60秒
long xhour = 3600;
long xday = 86400;
long byear = 1970;//从1970-1-1 0:00:00开始到现在所过的秒
long[] xmonth = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
long[] xyear = { 365, 366 };
long num = 0;

xdateseconds += xdatenow.Second; //算秒
xdateseconds += xdatenow.Minute * xminute; //算分
xdateseconds += xdatenow.Hour * xhour; //算时
xdateseconds += (xdatenow.Day - 1) * xday; //算天

//算月(月换成天算)
if (DateTime.IsLeapYear(xdatenow.Year))
{
xdateseconds += (xmonth[xdatenow.Month - 1] + 1) * xday;
}
else
{
xdateseconds += (xmonth[xdatenow.Month - 1]) * xday;
}

//算年(年换成天算)
long lyear = xdatenow.Year - byear;

for (int i = 0; i < lyear; i++)
{
if (DateTime.IsLeapYear((int)byear + i))
{
num++;
}
}

xdateseconds += ((lyear - num) * xyear[0] + num * xyear[1]) * xday;

return xdateseconds.ToString();
}

/// <summary>
/// 秒数转日期
/// </summary>
/// <param name="Value">秒数</param>
/// <returns>日期</returns>
public static DateTime GetGMTDateTime(int Value)
{
//秒数转时间日期
//GMT时间从2000年1月1日开始,先把它作为赋为初值
long Year = 2000, Month = 1, Day = 1;
long Hour = 0, Min = 0, Sec = 0;
//临时变量
long iYear = 0, iDay = 0;
long iHour = 0, iMin = 0, iSec = 0;
//计算文件创建的年份
iYear = Value / (365 * 24 * 60 * 60);
Year = Year + iYear;
//计算文件除创建整年份以外还有多少天
iDay = (Value % (365 * 24 * 60 * 60)) / (24 * 60 * 60);
//把闰年的年份数计算出来
int RInt = 0;
for (int i = 2000; i < Year; i++)
{
if ((i % 4) == 0)
RInt = RInt + 1;
}
//计算文件创建的时间(几时)
iHour = ((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) / (60 * 60);
Hour = Hour + iHour;
//计算文件创建的时间(几分)
iMin = (((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) % (60 * 60)) / 60;
Min = Min + iMin;
//计算文件创建的时间(几秒)
iSec = (((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) % (60 * 60)) % 60;
Sec = Sec + iSec;
DateTime t = new DateTime((int)Year, (int)Month, (int)Day, (int)Hour, (int)Min, (int)Sec);
DateTime t1 = t.AddDays(iDay - RInt);
return t1;
}

//把总秒数转换成DataTime格式,注意时区,默认是格林威治时间GMT

DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime().AddSeconds(info.lTime);
uploadtime.Text = string.Format("{0:F}", dt);

windows .net(C#+MSSQL) linux(php+mysql)  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软件编程 Inc.  

GMT+8, 2017-11-18 12:22 , Processed in 0.135779 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表