php 北京时间转换成unix时间戳,UNIX Time 时间戳 与 北京时间 相互转换

typedef struct t_xtime {

int year; int month; int day;

int hour; int minute; int second;

} _xtime ;

#define xMINUTE (60 ) //1分的秒数

#define xHOUR (60*xMINUTE) //1小时的秒数

#define xDAY (24*xHOUR ) //1天的秒数

#define xYEAR (365*xDAY ) //1年的秒数

将localtime(UTC+8北京时间)转为UNIX TIME,以1970年1月1日为起点

unsigned int xDate2Seconds(_xtime *time)

{

static unsigned int month[12]={

/*01月*/xDAY*(0),

/*02月*/xDAY*(31),

/*03月*/xDAY*(31+28),

/*04月*/xDAY*(31+28+31),

/*05月*/xDAY*(31+28+31+30),

/*06月*/xDAY*(31+28+31+30+31),

/*07月*/xDAY*(31+28+31+30+31+30),

/*08月*/xDAY*(31+28+31+30+31+30+31),

/*09月*/xDAY*(31+28+31+30+31+30+31+31),

/*10月*/xDAY*(31+28+31+30+31+30+31+31+30),

/*11月*/xDAY*(31+28+31+30+31+30+31+31+30+31),

/*12月*/xDAY*(31+28+31+30+31+30+31+31+30+31+30)

};

unsigned int seconds = 0;

unsigned int year = 0;

year = time->year-1970; //不考虑2100年千年虫问题

seconds = xYEAR*year + xDAY*((year+1)/4); //前几年过去的秒数

seconds += month[time->month-1]; //加上今年本月过去的秒数

if( (time->month > 2) && (((year+2)%4)==0) )//2008年为闰年

seconds += xDAY; //闰年加1天秒数

seconds += xDAY*(time->day-1); //加上本天过去的秒数

seconds += xHOUR*time->hour; //加上本小时过去的秒数

seconds += xMINUTE*time->minute; //加上本分钟过去的秒数

seconds += time->second; //加上当前秒数

seconds -= 8 * xHOUR;

return seconds;

}

将UNIX时间转为UTC+8 即北京时间

//UNIX转为UTC 已进行时区转换 北京时间UTC+8

void xSeconds2Date(unsigned long seconds,_xtime *time )

{

static unsigned int month[12]={

/*01月*/31,

/*02月*/28,

/*03月*/31,

/*04月*/30,

/*05月*/31,

/*06月*/30,

/*07月*/31,

/*08月*/31,

/*09月*/30,

/*10月*/31,

/*11月*/30,

/*12月*/31

};

unsigned int days;

unsigned short leap_y_count;

time->second = seconds % 60;//获得秒

seconds /= 60;

time->minute = seconds % 60;//获得分

seconds += 8 * 60 ;//时区矫正 转为UTC+8 bylzs

seconds /= 60;

time->hour = seconds % 24;//获得时

days = seconds / 24;//获得总天数

leap_y_count = (days + 365) / 1461;//过去了多少个闰年(4年一闰)

if( ((days + 366) % 1461) == 0)

{//闰年的最后1天

time->year = 1970 + (days / 366);//获得年

time->month = 12; //调整月

time->day = 31;

return;

}

days -= leap_y_count;

time->year = 1970 + (days / 365); //获得年

days %= 365; //今年的第几天

days = 01 + days; //1日开始

if( (time->year % 4) == 0 )

{

if(days > 60)--days; //闰年调整

else

{

if(days == 60)

{

time->month = 2;

time->day = 29;

return;

}

}

}

for(time->month = 0;month[time->month] < days;time->month++)

{

days -= month[time->month];

}

++time->month; //调整月

time->day = days; //获得日

}

python(6)时间戳和北京时间互转,输出当前的时间和推到七天前的日期

项目发展的需要:(包含时间函数)time datetime 时间戳和北京时间互转 import time import datetime s = '2015-04-17 11:25:30' d = d ...

练手——用Python写的时间戳转换为北京时间的小工具

#北京时间需加上8小时bj = 8*3600 def time_stamp(times):    #一天总秒数    nonDaySeconds = 24*3600    leapmonths = [ ...

关于Unix时间戳转北京时间的问题

工具在这里:http://tool.chinaz.com/Tools/unixtime.aspx?qq-pf-to=pcqq.group 今天踩了坑,无论参数是多少,年份总是1970.才发现原来参数必 ...

C&num; 时间戳和普通时间相互转换

// 时间戳转为C#格式时间 private DateTime StampToDateTime(string timeStamp) { DateTime dateTimeStart = TimeZon ...

Delphi中获取Unix时间戳及注意事项(c语言中time&lpar;&rpar;是按格林威治时间计算的,比北京时间多了8小时)

uses DateUtils;DateTimeToUnix(Now) 可以转换到unix时间,但是注意的是,它得到的时间比c语言中time()得到的时间大了8*60*60这是因为Now是当前时区的时间 ...

unix时间戳&lpar;unix timestamp&rpar;与北京时间的互转方法

1.在linux bash下北京时间与unix时间戳互转: 获取unix timestamp: 命令:date "+%s" 输出:1372654714 获取北京时间: 命令:dat ...

如何将北京时间批量转为Unix时间?用Excel!

前面我们说过Unix时间戳转换怎样在Excel批量修改,有些人就想如果有特殊需求,那能不能批量将北京时间批量转成unix时间呢?能!用Excel就可以实现!跟ytkah一起试试吧. 将unix时间戳转 ...

PHP时间戳与时间相互转换&lpar;精确到毫秒&rpar;

原文:PHP时间戳与时间相互转换(精确到毫秒) /** 获取当前时间戳,精确到毫秒 */ function microtime_float(){   list($usec, $sec) = explo ...

Unix时间戳转日期时间格式,C&num;、Java、Python各语言实现!

之前有个Q上好友没事问我,怎么自己写Unix时间戳转日期时间?于是我就顺手写了个C#版本给他!最近想起来,就萌发多写几个语言的版本分享,权当练习思路外加熟悉另外两种语言. 先说转换步骤 先处理年份,从 ...

随机推荐

SQL汉字转拼音函数-支持首字母、全拼

SQL汉字转拼音函数-支持首字母.全拼 FROM :http://my.oschina.net/ind/blog/191659 作者不详 --方法一sqlserver汉字转拼音首字母 --调用方法 s ...

《Java疯狂讲义》(第3版)学习笔记 1 - 如何学习Java

1.Java是一种面向对象语言,不要简单当做脚本使用.从基础学起,不要从Spring.J2EE.Hibernate和EJB开始学. 2.不要浮躁,应该扎扎实实先学好Java语言,然后按Java本身的学 ...

linux多线程-互斥&amp&semi;条件变量与同步

多线程代码问题描述 我们都知道,进程是操作系统对运行程序资源分配的基本单位,而线程是程序逻辑,调用的基本单位.在多线程的程序中,多个线程共享临界区资源,那么就会有问题: 比如 #include &lt ...

(转)如何学好C语言,一个成功人士的心得!

zidier111发表于 2013-1-26 08:59:05   今 天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所 ...

C&plus;&plus; Prime:指针

指针与引用的区别:1.指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象:其二:指针无需在定义时赋值.指针在块作用域内定义如果没有被初始化,也将拥有一个不确 ...

获取IP城市

新浪的接口 : http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 多地域测试方法:http://int.dpool.sina. ...

【HDOJ】3316 Mine sweeping

简单BFS. #include #include #include #include

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 简单概述一下本讲 别名,sql片段简单写一下,模糊查询多写一点 一.别名

调整登录会话和资源限制,bash和csh的ulimit设置方法

查看软限制和硬限制 要查看会话中的软限制设置,请运行: 对于csh: % limit 对于bash: $ ulimit -a 下面的输出样本显示了PFE上的软限制设置. 对于csh: % limit ...

&period;NetCore使用Swagger进行单版本或多版本控制处理

前面已经介绍过了Swagger的基础使用了 下面继续分别详细说明下 不添加版本控制以及添加版本控制的使用情况,其实也基本一致,对看起来可能更加容易理解 第一步 导入nuget包 nuget导入Swas ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值