C#中UnixTime和DateTime的转换(转载)

时间:2023-03-08 16:34:12

由于在API请求中返回回来的时间格式为UNIX形式,需要转换成正常的显示方式,在网上找到了这么一个例子。

使用是在C#中使用的,所以WP8开发应该也可以。

转载源地址:http://blog.linuxphp.org/?action=show&id=154

转换代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MYspace
{
public class UnixTime
{
private static DateTime BaseTime = new DateTime(,,); /// <summary>
/// 将unixtime转换为.NET的DateTime
/// </summary>
/// <param name="timeStamp">秒数</param>
/// <returns>转换后的时间</returns>
public static DateTime FromUnixTime(long timeStamp)
{
return new DateTime((timeStamp + * * ) * + BaseTime.Ticks);
} /// <summary>
/// 将.NET的DateTime转换为unix time
/// </summary>
/// <param name="dateTime">待转换的时间</param>
/// <returns>转换后的unix time</returns>
public static long FromDateTime(DateTime dateTime)
{
return (dateTime.Ticks - BaseTime.Ticks) / - * * ;
}
}
}

由于转载的这个版本,会因为时区的原因而受限,因此做了些改进,下面是改进版代码:

        private static DateTime BaseTime = new DateTime(, , );

        /// <summary>
/// 将unixtime转换为.NET的DateTime
/// </summary>
/// <param name="timeStamp">秒数</param>
/// <returns>转换后的时间</returns>
public static DateTime FromUnixTime(long timeStamp)
{
return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime (timeStamp * + BaseTime.Ticks));
} /// <summary>
/// 将.NET的DateTime转换为unix time
/// </summary>
/// <param name="dateTime">待转换的时间</param>
/// <returns>转换后的unix time</returns>
public static long FromDateTime(DateTime dateTime)
{
return (TimeZone.CurrentTimeZone.ToUniversalTime(dateTime).Ticks - BaseTime.Ticks) / ;
}

使用TimeZone进行对时区上的处理,这样就不会再因为用户所在时区的原因导致显示时间的出错。