Go语言time包的练习及封装

package main 
 
//author:xcl
//2014-1-14
 
import (
	"fmt"
	"time"
    "github.com/xclpkg/utils"
    "sort"
)
 
func main(){
 
    t := time.Now();
    //alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
    //select to_date('2014-06-09 18:04:06','yyyy-MM-dd HH24:mi:ss') as dt from dual;
    fmt.Println("\n演示时间 => ",utils.GetTmShortStr(t,"y-m-d H:i:s a"))
 
    //返回当前是一年中的第几天
    //select to_char(sysdate,'ddd'),sysdate from dual;
    yd := t.YearDay();
    fmt.Println("一年中的第几天: ",yd)       
 
    //一年中的第几周
    year,week := t.ISOWeek()
    fmt.Println("一年中的第几周: ",year," | ",week)       
 
    //当前是周几
    //select to_char(sysdate,'day') from dual;
    //select to_char(sysdate,'day','NLS_DATE_LANGUAGE = American') from dual;   
    fmt.Println("当前是周几: ",t.Weekday().String())
 
    //字符串转成time.Time
    //alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';
    //select to_date('14-06-09 6:04:06','yy-MM-dd hh:mi:ss') as dt from dual;    
    tt,er := time.Parse(utils.GoStdTime(),"2014-06-09 16:04:06")
    if(er != nil){
        fmt.Println("字符串转时间: parse error!")
    }else{
        fmt.Println("字符串转时间: ",tt.String())
    }
 
 
    fmt.Println("\n演示时间 => ",utils.GetTmStr(t,"y-m-d h:i:s"))
   
    ta := t.AddDate(1,0,0)   
    fmt.Println("增加一年 => ",utils.GetTmStr(ta,"y-m-d"))
 
    ta = t.AddDate(0,1,0)
    fmt.Println("增加一月 => ",utils.GetTmStr(ta,"y-m-d"))
 
    //select sysdate,sysdate + interval '1' day from dual;
    ta = t.AddDate(0,0,1) //18
    fmt.Println("增加一天 => ",utils.GetTmStr(ta,"y-m-d"))
 
    durdm,_ := time.ParseDuration("432h")
    ta = t.Add(durdm)
    fmt.Println("增加18天(18*24=432h) => ",utils.GetTmStr(ta,"y-m-d"))
 
    //select sysdate,sysdate - interval '7' hour from dual;
    dur,_ := time.ParseDuration("-2h")
    ta = t.Add(dur)
    fmt.Println("减去二小时 => ",utils.GetTmStr(ta,"y-m-d h:i:s"))
 
    //select sysdate,sysdate - interval '7' MINUTE from dual;
    durmi,_ := time.ParseDuration("-7m")
    ta = t.Add(durmi)
    fmt.Println("减去7分钟 => ",utils.GetTmStr(ta,"y-m-d h:i:s"))
 
    //select sysdate,sysdate - interval '10' second from dual;
    durs,_ := time.ParseDuration("-10s")
    ta = t.Add(durs)
    fmt.Println("减去10秒 => ",utils.GetTmStr(ta,"y-m-d h:i:s"))
 
    ttr,er := time.Parse(utils.GoStdTime(),"2014-06-09 16:58:06")
    if(er != nil){
        fmt.Println("字符串转时间: 转换失败!")
    }else{
        fmt.Println("字符串转时间: ",ttr.String())
    }
 
    //alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
    //select trunc(to_date('2014-06-09 16:58:06','yyyy-mm-dd hh24:mi:ss'),'mi') as dt from dual; 
    // SQL => 2014-06-09 16:58:00
    // Truncate =>  2014-06-09 16:50:00
    durtr,_ := time.ParseDuration("10m")
    ta = ttr.Truncate(durtr)
    fmt.Println("Truncate => ",utils.GetTmStr(ta,"y-m-d H:i:s"))
 
    //select round(to_date('2014-06-09 16:58:06','yyyy-mm-dd hh24:mi:ss'),'mi') as dt from dual; 
    // SQL => 2014-06-09 16:58:00
    // Round =>  2014-06-09 17:00:00
    ta = ttr.Round(durtr)
    fmt.Println("Round => ",utils.GetTmStr(ta,"y-m-d H:i:s"))
 
    //日期比较
    tar1,_ := time.Parse(utils.GoStdTime(),"2014-06-09 19:38:36")
    tar2,_ := time.Parse(utils.GoStdTime(),"2015-01-14 17:08:26")
    if tar1.After(tar2) {
        fmt.Println("tar1 > tar2")
    }else if tar1.Before(tar2) {
        fmt.Println("tar1 < tar2")
    }else{
        fmt.Println("tar1 = tar2")
    }
    tar3,_ := time.Parse(utils.GoStdTime(),"2000-07-19 15:58:16")
 
    //日期列表中最晚日期
    // select greatest('2014-06-09','2015-01-14','2000-07-19') from dual;    
    var arr utils.TimeSlice
    arr = []time.Time{tar1,tar2,tar3}
    temp := utils.Greatest(arr)
    fmt.Println("日期列表中最晚日期 => ",utils.GetTmStr(temp,"y-m-d"))    
 
    //日期数组从早至晚排序
    fmt.Println("\n日期数组从早至晚排序")
    sort.Sort(arr)
    for _,at := range arr {
         fmt.Println("Sort => ",utils.GetTmStr(at,"y-m-d H:i:s"))
    }
 
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值