lua 中关于时间戳和可读时间格式的一点记录

lua 标准库中提供了关于时间的函数os.time()和os.date(),这两个函数使用起来还是有需要注意的地方的;这两个函数的结果都是加入了时区;比如我现在系统是GMT+8; os.time({year=1970, month=1, day=1, hour=0})计算出来的是-28800,也就是86060;计算的是当前table中给定的时间距离1970.1.1 08:00时间的秒数,所以就得到负数了;

C标准库中,time()函数得到的时间戳其实也是加入了时区,也就是说不管你系统是那个时区,该函数返回的都是距离1970.1.1 00:00到当前的秒数;比如现在是GMT+8 00:00, 那么GMT+9 就是01:00,在这两个 时区同时调用time()函数,得到的值是一样的;

时区只会影响到我们转换过来的可读样式,比如os.date()函数,os.date(“*t”, 0)的结果在不同的时区hour字段的值会不一样,世界标准时间以GMT+0为参照,北京时间以GMT+8为参照,中间有8个小时的差距;

写这个记录,主要是最近写了个游戏活动开启的功能, 服务器告诉客服端活动的开启和结束时间(时间戳),比如09:00- 12:00;然后客户端要转换成可读样式,这里就要考虑到时区了,因为os.date()是在本地计算的,如果没注意直接转换过去就会得到本地的时间显示出来;所以如果服务器给的是时间戳的话,这个还真得多注意下。以前写代码都好少涉及到本地转换可读格式的,这次遇到了记录下,算是方便加强下记忆……

随便说下:os.date(“*t”, 0)获取到的table中hour字段是否可以当做当前时区呢?也就是说是否已通过该方式获取当前系统的时区;自己也不确定,打个问号吧

时间: 2024-12-13 14:17:37

lua 中关于时间戳和可读时间格式的一点记录的相关文章

使用饿了么el-date-picker里及如何将后台给的时间戳js转化为时间格式

首先代码是这个样子的,使用v-model <el-date-picker v-model="formData.createTime" :disabled="true" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期"> </el-date-picker> 当formData.createTime

mysql 查询时间戳(TIMESTAMP)转成常用可读时间格式

from_unixtime()是MySQL里的时间函数 date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值格式化 例如: mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' ) ->20071120 mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' ) ->2007年11月20 UNIX_TI

mysql时间戳转换成可读时间格式

代码: SELECT FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S') 附:在mysql中,一个时间字段的存储类型是int(11),怎么转化成字符类型,比方存储为13270655222,需要转化为yyyy -mm-dd的形式使用 FROM_UNIXTIME函数,具体如下: 代码: FROM_UNIXTIME(unix_timestamp,format) 返回表示 Unix 时间标记的一个字符串,根据format字符串格式化.format可以包含与DAT

关于cocos2dx 2.x lua 中cocos studio 界面,读入时,无法触摸的几点总结

1.CCLayer 下没有先添加一层TouchGroup 2.CCTouchGroup添加 widget时,没有使用addWidget而是使用了addChild 3.Scrollview setDirector 横向,不能使用常量 kCCScrollViewDirectionHorizontal , 其为空值

jquery输出ajax返回数据中的时间戳转化为日期时间的函数

//第一种 function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' '); } alert(getLocalTime(1293072805)); //结果是2010年12月23日 10:53 //第二种 function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocal

dedecms如何把时间戳转换成正常时间格式

如果在datalist 可以用{dede:field.shijian function=strftime('%Y-%m-%d',@me)/} 如果不在datalist中调用的话,单独调用用<?php echo $cfg_ml->fields['shijian']; ?> shijian 表示你建立的表单. 亲测无错.. AiteCms,企业模板快速建站专家,点击了解更多 转载自织梦模板教程(www.dede58.com)

关于vue将时间戳转换成自定义时间格式

1.首先建立一个date.js文件,写入如下代码: export function formatDate (date, fmt) { if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); } let o = { 'M+': date.getMonth() + 1, 'd+': date.getDate(), 'h+': date.g

Unity3D中关于场景销毁时事件调用顺序的一点记录

先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时场景中如果还有待回收的对象,就会报错,报错显示的信息为,我的对象池GameObject已经被销毁了云云,因为回收的对象我会把他们作为绑定了对象池的GameObject的子级来方便管理. 所以唯一的可能就是脚本方法调用顺序不可控,即不同GameObject的OnBecameInvisible在其它Ga

制作时间戳和时间戳转标准日期时间等

制作时间戳:  /// <summary>        /// DateTime时间格式转换为Unix时间戳格式        /// </summary>        /// <param name="time"> DateTime时间格式</param>        /// <returns>Unix时间戳格式</returns>        public static long ConvertDate