PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

关于表格时间字段会被展示成1970-01-01 08:00:00的解决办法

管理员 2024-12-14
Fastadmin
6

我在开发过程中遇到一个很奇怪的问题,在本地开发的时候表格中的时间字段如果值为0会被展示成汉字“无”
但是布到服务上会被展示成 1970-01-01 08:00:00
后来排查发现:public/assets/js/require-table.js 中 格式化时间字段的函数代码如下:

  datetime: function (value, row, index) {                    var datetimeFormat = typeof this.datetimeFormat === 'undefined' ? 'YYYY-MM-DD HH:mm:ss' : this.datetimeFormat;                    if (isNaN(value)) {                        return value ? Moment(value).format(datetimeFormat) : __('None');                    } else {                        return value ? Moment(parseInt(value) * 1000).format(datetimeFormat) : __('None');                    }                },

在这段代码中判断value为假就展示汉字“无” 在我本地环境数据库取到的字段来下是int型的0 js的if判断会认为是假,而服务器上通过sql查询后取出的字段类型转义为了string类型js中的if判断会认为string类型的0为真所以不会展示“无”会吧0格式化为时间格式。
这里有两个解决办法:
一、设置数据库查询出来不转义为string类型保留原格式。
二、将对应代码替换为:

   datetime: function (value, row, index) {                    var datetimeFormat = typeof this.datetimeFormat === 'undefined' ? 'YYYY-MM-DD HH:mm:ss' : this.datetimeFormat;                    if (isNaN(value)) {                        return parseInt(value)!=0 ? Moment(value).format(datetimeFormat) : __('None');                    } else {                        return parseInt(value)!=0 ? Moment(parseInt(value) * 1000).format(datetimeFormat) : __('None');                    }                },

注意修改js文件后需要按照文档命令行章节中的压缩代码介绍压缩下js代码使其在非debug模式也生效。
这里我直接用的第二种方法,因为我之前遇到过tp5.0放在linux服务器上查出来的数据库数据强制转成string类型,我当时设置相关数据库连接属性(PDO::ATTR_STRINGIFY_FETCHES)也没起作用,最后归结于可能是php版本问题也没深究,如果有debug出是什么原因转换的欢迎下面回复。


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部