最近翻看以前的文章时,偶尔发现有的文章显示时间不正确,编辑器里显示的时间是正常的,才知道Ghost里只是显示UTC时间。
我不知道调整服务器的时区的方法是否可行,因为Ghost在Github上似乎也没有给出绝对的答案,所以解决的办法只能是对应浏览者的本地时区。
Ghost官方基本给出了解决办法,利用Moment.js,只需要稍微修改即可。
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/locale/zh-cn.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.4.1/moment-timezone-with-data-2010-2020.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
moment.locale('zh-cn');
$('.post-date').each(function (i, date) {
var $date = $(date);
$date.html(
moment($date.attr('datetime'))
.tz('Asia/Shanghai')
.format('LLL')
);
});
});
</script>
假设你用的是Ghost默认模板,将上面一段插入到default.hbs
中jQuery后面。并将模版中涉及到时间的部分修改为:
<time class="post-date" datetime="{{date format="YYYY-MM-DDTHH:mm:ss.SS\Z"}}"></time>
关于上面format('LLL')
,下面是对应zh-cn的详细解释:
moment().format('L'); // 2015-12-17
moment().format('l'); // 2015-12-17
moment().format('LL'); // 2015年12月17日
moment().format('ll'); // 2015年12月17日
moment().format('LLL'); // 2015年12月17日晚上10点36分
moment().format('lll'); // 2015年12月17日晚上10点36分
moment().format('LLLL'); // 2015年12月17日星期四晚上10点36分
moment().format('llll'); // 2015年12月17日星期四晚上10点36分
关于更多的Moment.js用法请前往主页。