c#中没有象PHP一样的time()时间戳函数,但有DateTime.Now.Ticks用来计算时间差。
此属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。
dotnet下用DateTime.Now.Ticks能够得到精确的时间,单位是10^-7s。
经过实验,发现
long
tbxUrl.Text=a.ToString();
long a=(DateTime.Now.Ticks-aa.Ticks)/10000000-8*60*60; tbxUrl.Text=a.ToString();
要减去8*60*60才和time()函数得到的值一样。
什么问题?刚好是8个时区产生的差别。
DateTime aa=new
MessageBox.Show("1970 "+aa.Ticks.ToString()+"now"+DateTime.Now.Ticks.ToString());
long
tbxUrl.Text=a.ToString();
DateTime aa=new DateTime(1970,1,1); MessageBox.Show("1970 "+aa.Ticks.ToString()+"now"+DateTime.Now.Ticks.ToString()); long a=(DateTime.Now.Ticks-aa.Ticks)/10000000-8*60*60; tbxUrl.Text=a.ToString();
同时发现c#里面DataTime有一个属性!DateTime.UtcNow已经考虑了时区问题。
ok~ 使用下面的代码即可
DateTime timeStamp=new DateTime(1970,1,1); //得到1970年的时间戳
long a=(DateTime.UtcNow.Ticks-timeStamp.Ticks)/10000000; //注意这里有时区问题,用now就要减掉8个小时
DateTime timeStamp=new DateTime(1970,1,1); //得到1970年的时间戳 long a=(DateTime.UtcNow.Ticks-timeStamp.Ticks)/10000000; //注意这里有时区问题,用now就要减掉8个小时
UNIX时间戳 与 时间格式互相转换
/// <summary>
/// 将Unix时间戳格式转换为c# DateTime时间格式
/// </summary>
/// <param name="timeStamp">时间戳</param>
/// <returns>DateTime </returns>
public DateTime GetTime(string
{
new
long lTime = long.Parse(timeStamp + "0000000");
new
return
}
/// <summary> /// 将Unix时间戳格式转换为c# DateTime时间格式 /// </summary> /// <param name="timeStamp">时间戳</param> /// <returns>DateTime </returns> public DateTime GetTime(string timeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); }
/// <summary>
/// 将c# DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time">时间</param>
/// <returns>double</returns>
public int
{
int
new
int)(time - startTime).TotalSeconds;
return
}