beego中log日志日期问题

最近遇到了之前版本的beego的log日志代码中一个小问题,在输出的日志中,1-9月份都没问题,但是到了10月的时候的输出却依次大一个月,后来排查发现是代码中只用改一下就可以解决。

改了之后的代码,我把函数单独拎出来跑了一下,问题解决:

package main

import (
	"fmt"
	"time"
	"unsafe"
)

//formatTimeHeader函数来源于 astaxie\beego\logs\logger.go
func formatTimeHeader(when time.Time) ([]byte, int) {
	fmt.Println(when)
	y, mo, d := when.Date()
	h, mi, s := when.Clock()
	//fmt.Println(y, mo, d)
	//fmt.Println(h, mi, s)
	//fmt.Println(mo)
	//len(2006/01/02 15:03:04)==19
	var buf [20]byte
	t := 3
	for y >= 10 {
		p := y / 10
		buf[t] = byte('0' + y - p*10)
		y = p
		t--
	}
	buf[0] = byte('0' + y)
	buf[4] = '/'
	if mo > 9 {
		buf[5] = '1'
		buf[6] = byte('0' + mo - 10)   // 9改为10,解决问题
	} else {
		buf[5] = '0'
		buf[6] = byte('0' + mo)
	}
	buf[7] = '/'
	t = d / 10
	buf[8] = byte('0' + t)
	buf[9] = byte('0' + d - t*10)
	buf[10] = ' '
	t = h / 10
	buf[11] = byte('0' + t)
	buf[12] = byte('0' + h - t*10)
	buf[13] = ':'
	t = mi / 10
	buf[14] = byte('0' + t)
	buf[15] = byte('0' + mi - t*10)
	buf[16] = ':'
	t = s / 10
	buf[17] = byte('0' + t)
	buf[18] = byte('0' + s - t*10)
	buf[19] = ' '

	return buf[0:], d
}

//byte转string类型
func BytesToStringFast(b []byte) string {
	return *(*string)(unsafe.Pointer(&b))
}

func main() {
	//x, _ := formatTimeHeader(time.Now())
	fmt.Println(x)
	//fmt.Println(BytesToStringFast(x))

	for i:=-12; i<12;i++{
		x, _ := formatTimeHeader(time.Now().AddDate(0, i, 0))
		fmt.Println(BytesToStringFast(x))
		fmt.Println("")
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值