Go语言时间格式化

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println(time.Now().Format("2006-01-02 15:04:05"))          // -->2017-04-17 17:21:33
	fmt.Println(timFormat("2017-12-24 23", "yyyy-MM-dd HH:mm:ss")) // -->2017-12-24 23:00:00
}

/*
	将输入的date按照指定的partten格式化
	@version 1.0 目前只支持正常的格式,其余变态格式暂不支持
		如:yyyy,yyyy-MM,yyyy-MM-dd,yyyy-MM-dd HH,yyyy-MM-dd HH:mm,yyyy-MM-dd HH:mm:ss
	@date string 要被格式化的日期
	@partten stirng 指定格式
	@author wangdy
	return 返回格式化后的日期
*/
func timFormat(date, partten string) string {
	var ptnLength = len(partten)
	var dateLength = len(date)
	returnStr := date
	switch partten {
	case partten:
		if ptnLength <= dateLength {
			return Substr(date, 0, ptnLength)
		} else {
			var chaLen = ptnLength - dateLength
			if dateLength == 4 {
				if chaLen == 3 {
					returnStr += "-01"
					return returnStr
				} else if chaLen == 6 {
					returnStr += "-01-01"
					return returnStr
				} else if chaLen == 9 {
					returnStr += "-01-01 00"
					return returnStr
				} else if chaLen == 12 {
					returnStr += "-01-01 00:00"
					return returnStr
				} else if chaLen == 15 {
					returnStr += "-01-01 00:00:00"
					return returnStr
				}
			} else if dateLength == 7 {
				if chaLen == 3 {
					returnStr += "-01"
					return returnStr
				} else if chaLen == 6 {
					returnStr += "-01 00"
					return returnStr
				} else if chaLen == 9 {
					returnStr += "-01 00:00"
					return returnStr
				} else if chaLen == 12 {
					returnStr += "-01 00:00:00"
					return returnStr
				}
			} else if dateLength == 10 {
				if chaLen == 3 {
					returnStr += " 00"
					return returnStr
				} else if chaLen == 6 {
					returnStr += " 00:00"
					return returnStr
				} else if chaLen == 9 {
					returnStr += " 00:00:00"
					return returnStr
				}
			} else if dateLength == 13 {
				if chaLen == 3 {
					returnStr += ":00"
					return returnStr
				} else if chaLen == 6 {
					returnStr += ":00:00"
					return returnStr
				}
			} else if dateLength == 16 && chaLen == 3 {
				returnStr += ":00"
				return returnStr
			}
			return "xxxxxxxxxx" + date
		}
	default:
		fmt.Println("it's default case!")
		return date
	}
}

/*
	按照格式截取字符串
	@str string 要被截取的源字符串
	@start int 开始索引,从0开始
	@length int 要截取的长度
	@author wangdy
	return 返回截取后字符串
*/
func Substr(str string, start, length int) string {
	rs := []rune(str)
	rl := len(rs)
	end := 0

	if start < 0 {
		start = rl - 1 + start
	}
	end = start + length

	if start > end {
		start, end = end, start
	}

	if start < 0 {
		start = 0
	}
	if start > rl {
		start = rl
	}
	if end < 0 {
		end = 0
	}
	if end > rl {
		end = rl
	}
	return string(rs[start:end])
}


以上就是datetime的格式化方法了。可能不是最优代码,如有特别好的建议,请评论,或者发邮箱wdy2099@126.ccom.

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一掬净土

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值