前段时间项目中涉及到了MySql和MsSql数据类型之间的转换,最近又在研究新浪微博的API,涉及到了带有时区的GMT时间类型的转换,所以,特记录于此,以备日后查询。

一:UNIX时间戳与datetime时间之间的转换

1. 将Unix时间戳转换为DateTime类型时间

方法一:

        /// <summary>
/// 将Unix时间戳转换为DateTime类型时间
/// </summary>
/// http://www.cnblogs.com/babycool
/// <param name="d"></param>
/// <returns></returns>
public static DateTime ConvertIntToDateTime(double d)
{
System.DateTime time = System.DateTime.MinValue;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
time = startTime.AddSeconds(d);
return time;
}

方法二:

/// <summary>
/// 将Unix时间戳转换为DateTime类型时间
/// </summary>
/// http://www.cnblogs.com/babycool
/// <param name="time"></param>
/// <returns></returns>
static DateTime ConvIntToDateTime(long time)
{
DateTime timeStamp = new DateTime(1970, 1, 1); //得到1970年的时间戳
long t = (time + 8 * 60 * 60) * 10000000 + timeStamp.Ticks;
DateTime dt = new DateTime(t);
return dt;
}

2.在SQL Server Management Studio 中查询并转换:

--将Unix时间戳转换为dateline类型
select top 10 DATEADD(SS,regdate,'1970-01-01 00:00:00') from dbo.uc_members

3. 将DateTime时间格式转换为Unix时间戳格式

/// <summary>
/// 将DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// http://www.cnblogs.com/babycool
/// <param name="time"></param>
/// <returns></returns>
public static double ConvertDateTimeToInt(System.DateTime time)
{
double intResult = 0;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
intResult = (time - startTime).TotalSeconds;
return intResult;
}

二:将新浪微博中带有时区的GMT时间转换为DateTime

/// <summary>
/// 将新浪微博中带有时区的GMT时间转换为DateTime
/// </summary>
/// http://www.cnblogs.com/babycool
/// <param name="dateString">微博时间字符串</param>
/// <returns>DateTime</returns>
public static DateTime ParseUTCDate(string dateString)
{
System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture; DateTime dt = DateTime.ParseExact(dateString, "ddd MMM dd HH:mm:ss zzz yyyy", provider); return dt;
}

三:转换效果:

相应代码:

            //新浪微博返回的时间是带有时区的GMT时间,转换为datetime类型时间格式:

            // GMT时间: Tue May 31 17:46:55 +0800 2011
Response.Write("将GMT时间转换为datetime类型时间:");
Response.Write(ParseUTCDate("Tue May 31 17:46:55 +0800 2011").ToString());
Response.Write("<br/>"); //UNIX时间戳 1176686120
Response.Write("将UNIX时间戳转换为datetime类型时间:");
Response.Write(ConvertIntToDateTime(1176686120));
Response.Write("<br/>");
Response.Write("方法二:");
Response.Write(ConvIntToDateTime(1176686120));
Response.Write("<br/>");
Response.Write("将datetime类型时间转换为UNIX时间戳:");
Response.Write(ConvertDateTimeToInt(ConvertIntToDateTime(1176686120)));
Response.Write("<br/>");
本文转自 酷小孩 博客园博客,原文链接:http://www.cnblogs.com/babycool/archive/2013/06/13/3134471.html,如需转载请自行联系原作者

[开发笔记]-unix时间戳、GMT时间与datetime类型时间之前的转换的更多相关文章

  1. Java开发笔记(四十四)本地日期时间与字符串的互相转换

    之前介绍Calendar的时候,提到日历实例无法直接输出格式化后的时间字符串,必须先把Calendar类型转换成Date类型,再通过格式化工具SimpleDateFormat获得字符串.而日期时间的格 ...

  2. Java开发笔记(二十七)数值包装类型

    方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减 ...

  3. Java开发笔记(三十三)字符包装类型

    正如整型int有对应的包装整型Integer那样,字符型char也有对应的包装字符型Character.初始化字符包装变量也有三种方式,分别是:直接用等号赋值.调用包装类型的valueOf方法.使用关 ...

  4. 利用UNIX时间戳来计算ASP的在线时间

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><!DOCTYPE html PUBLIC "-/ ...

  5. 开发工具-Unix时间戳转换

    更新日志 2022年6月10日 初始化链接. https://toolb.cn/timestamp

  6. iOS开发笔记系列-基础3(多态、动态类型和动态绑定)

    多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方法所需要的代码,这使得它独立于其他的类 ...

  7. Java开发笔记(五)数值变量的类型

    如今个人电脑的配置越来越高,内存和硬盘的容量大小都是以G为单位,而1G=1024M=1024*1024K=1024*1024*1024字节.不过在PC的早期发展阶段,电脑的存储空间却是十分有限的,像2 ...

  8. C# DateTime时间格式转换为Unix时间戳格式

    double ntime=dateTimeToUnixTimestamp(DateTime.Now); long g1 = GetUnixTimestamp(); long g2 = ConvertD ...

  9. Unix时间戳与C# DateTime时间类型互换

    Unix时间戳最小单位是秒,开始时间为格林威治标准时间1970-01-01 00:00:00ConvertIntDateTime方法的基本思路是通过获取本地时区表示Unixk开始时间,加上Unix时间 ...

随机推荐

  1. find的基本查询命令《二》

    Linux find命令详解 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你 ...

  2. 用robotframework 标准库String解决由于存在千分位分隔符导致两个数值不相等的问题。

    在编写robotframework自动化断言的过程中,我遇到了如下问题: 我想写一个两个金额判断是否相等的断言,其中一个金额是展示字段存在千分位分隔符,另一个金额是input带入字段,没有千分位分隔符 ...

  3. 测量C++程序运行时间

    有个很奇怪的现象,我自认为写得好的文章阅读量只有一百多,随手写的却有一千多--要么是胡搞,要么是比较浅显.纵观博客园里众多阅读过万的文章,若非绝世之作,则必为介绍入门级知识的短文.为了让我的十八线博客 ...

  4. Property [*****] not found on type [com.erp.pojo.ErpSupplier]

    我实体类里用的是 springboot 里@Slf4j   @Data  注解式写的  这样可以减少代码量 ,但是遇到一个问题影响我好长时间 出现了这个错误  Property [*****] not ...

  5. 视频图文教学 - 用最快的速度把 DotNet Core Blazor 程序安装到 树莓派中 并且用网页控制 GPIO 闪灯

    前言 dotnet core 在3.0时代已经发展得很好. 尤其是在跨平台方面更已经是达到了很实用的阶段. 作为 dotnet 程序员, 应该对 Linux 有充分的了解, 也可以在业余时间玩玩硬件, ...

  6. XFS文件系统的备份与恢复

    永久修改主机名:hostnamectl set-hostname oldboy临时修改主机名:hostname xfsdump备份xfsdump -f 备份的文件位置 要备份的分区或者磁盘 免交互备份 ...

  7. Python语法详解

    python语法解析 目录 python语法解析 一.顺序结构 二.分支结构 2.1 if 的基本语法 2.2 if 的基本应用 三.循环结构 3.1 while 语法 3.1.1 语法结束条件 3. ...

  8. idea ------- 源码调试运行

    1.创建一个 想学 的 ,使用单步调试进行一步步学习 调整系统资源 单步调试 (F7) ,进入不了源码,调整idea 让我们可以进入底层学习 想要在源码里面添加注释,要将引用的源文件指向,我们刚才复制 ...

  9. linux CVE-2019-13272 本地特权漏洞

    漏洞描述 在5.1.17之前的Linux内核中,kernel / ptrace.c中的ptrace_link错误地处理了想要创建ptrace关系的进程的凭据记录,这允许本地用户通过利用父子的某些方案来 ...

  10. 永恒之蓝MS17010复现

    MS17010复现 靶机win7:192.168.41.150 攻击kali:   192.168.41.147 扫描 通过auxiliary/scanner/smb/smb_ms17_010模块扫描 ...