zoukankan      html  css  js  c++  java
  • golang时间转换

    1.datetime转换成时间字符串

    package main
    
    import (
    	"fmt"
    	"reflect"
    	"time"
    )
    
    func main() {
    	now := time.Now()       // 当前 datetime 时间
    	fmt.Println(reflect.TypeOf(now))    // 打印当前时间的类型
    	fmt.Println(now)        // 打印当前时间
    	fmt.Println("***********************")
    	t1 := now.Format("2006-01-02 15:04:05")     // 把当前 datetime 时间转换成时间字符串
    	fmt.Println(t1)
    	fmt.Println(reflect.TypeOf(t1))
    }
    

    程序执行结果

    time.Time
    2019-09-16 17:51:01.2357834 +0800 CST m=+0.004988701
    ***********************
    2019-09-16 17:51:01
    string
    

    2.datetime转换成时间戳

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func parse_datetime_to_timestamp(d time.Time) int64 {
    	unix_time := d.Unix()
    	return unix_time
    }
    func main() {
    	now := time.Now()                      // 当前 datetime 时间
    	t1 := parse_datetime_to_timestamp(now) // 转换成时间戳
    
    	tomorrow := now.AddDate(0, 0, +1)           // 一天之后的 datetime 时间
    	t2 := parse_datetime_to_timestamp(tomorrow) // 转换成时间戳
    
    	fmt.Println(t1)
    	fmt.Println(t2)
    }
    

    程序执行结果

    1568631868
    1568718268
    

    3.时间戳转换成时间字符串

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func parse_timestamp_to_timestr(t int64, flag int) string {
    	var time_str string
    	if flag == 1 {
    		time_str = time.Unix(t, 0).Format("2006.01.02")
    	} else if flag == 2 {
    		time_str = time.Unix(t, 0).Format("2006-01-02 15:04:05")
    	} else if flag == 3 {
    		time_str = time.Unix(t, 0).Format("2006-01-02 15:04")
    	} else {
    		time_str = time.Unix(t, 0).Format("2006-01-02")
    	}
    	return time_str
    }
    
    func main() {
    	var t1 int64
    	t1 = 1567778332
    	str1 := parse_timestamp_to_timestr(t1,3)
    	fmt.Println(str1)
    }
    

    程序执行结果

    2019-09-06 21:58
    

    4.时间字符串转换成时间戳

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func parse_timestr_to_timestamp(time_str string, flag int) int64 {
    	var t int64
    	loc, _ := time.LoadLocation("Local")
    	if flag == 1 {
    		t1, _ := time.ParseInLocation("2006.01.02 15:04:05", time_str, loc)
    		t = t1.Unix()
    	} else if flag == 2 {
    		t1, _ := time.ParseInLocation("2006-01-02 15:04", time_str, loc)
    		t = t1.Unix()
    	} else if flag == 3 {
    		t1, _ := time.ParseInLocation("2006-01-02", time_str, loc)
    		t = t1.Unix()
    	} else if flag == 4 {
    		t1, _ := time.ParseInLocation("2006.01.02", time_str, loc)
    		t = t1.Unix()
    	} else {
    		t1, _ := time.ParseInLocation("2006-01-02 15:04:05", time_str, loc)
    		t = t1.Unix()
    	}
    	return t
    }
    
    func main() {
    	time_str1 := "2019-09-16 00:00:00"
    	time_str2 := "2019-09-16 15:04"
    	time_str3 := "2019-09-16"
    	time_str4 := "2019.09.18"
    	t1 := parse_timestr_to_timestamp(time_str1,5)
    	fmt.Println(t1)
    
    	t2 := parse_timestr_to_timestamp(time_str2,2)
    	fmt.Println(t2)
    
    	t3 := parse_timestr_to_timestamp(time_str3,3)
    	fmt.Println(t3)
    
    	t4 := parse_timestr_to_timestamp(time_str4,4)
    	fmt.Println(t4)
    }
    

    程序执行结果

    1568563200
    1568617440
    1568563200
    1568736000
    

    5.时间戳转换成datetime时间

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func parse_timestamp_to_datetime(t int64) time.Time {
    	return time.Unix(t,0)
    }
    
    func main() {
    	var t1 int64
    	t1 = 1568634050
    	time1 := parse_timestamp_to_datetime(t1)
    	fmt.Println(time1)
    }
    

    程序执行结果

    2019-09-16 19:40:50 +0800 CST
    

    6.时间字符串转换成时间戳

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func parse_timestr_to_datetime(time_str string, flag int) time.Time {
    	if flag == 1 {
    		t, error1 := time.Parse("2006-01-02 15:04:05", time_str)
    		if error1 != nil {
    			panic(error1)
    		}
    		return t
    	} else if flag == 2 {
    		t, error2 := time.Parse("2006-01-02 15:04", time_str)
    		if error2 != nil {
    			panic(error2)
    		}
    		return t
    	} else if flag == 3 {
    		t, error3 := time.Parse("2006-01-02", time_str)
    		if error3 != nil {
    			panic(error3)
    		}
    		return t
    	} else if flag == 4 {
    		t, error4 := time.Parse("2006.01.02 15:04:05", time_str)
    		if error4 != nil {
    			panic(error4)
    		}
    		return t
    	} else if flag == 5 {
    		t, error5 := time.Parse("2006.01.02 15:04", time_str)
    		if error5 != nil {
    			panic(error5)
    		}
    		return t
    	} else {
    		t, err := time.Parse("2006.01.02", time_str)
    		if err != nil {
    			panic(err)
    		}
    		return t
    	}
    }
    
    func main() {
    	time_str1 := "2019-09-16 15:04:05"
    	t1 := parse_timestr_to_datetime(time_str1, 1)
    	fmt.Println(t1)
    
    	time_str2 := "2019-09-16 15:04"
    	t2 := parse_timestr_to_datetime(time_str2, 2)
    	fmt.Println(t2)
    
    	time_str3 := "2019-09-16"
    	t3 := parse_timestr_to_datetime(time_str3, 3)
    	fmt.Println(t3)
    
    	time_str4 := "2019.09.16 15:04:05"
    	t4 := parse_timestr_to_datetime(time_str4, 4)
    	fmt.Println(t4)
    
    	time_str5 := "2019.09.16 15:04"
    	t5 := parse_timestr_to_datetime(time_str5, 5)
    	fmt.Println(t5)
    
    	time_str6 := "2019.09.16"
    	t6 := parse_timestr_to_datetime(time_str6, 6)
    	fmt.Println(t6)
    }
    

    程序执行结果

    2019-09-16 15:04:05 +0000 UTC
    2019-09-16 15:04:00 +0000 UTC
    2019-09-16 00:00:00 +0000 UTC
    2019-09-16 15:04:05 +0000 UTC
    2019-09-16 15:04:00 +0000 UTC
    2019-09-16 00:00:00 +0000 UTC
    

    7.日期加减操作

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	now := time.Now()		// 当前 datetime时间
    	tomorrow := now.AddDate(0, 0, +1)	// 一天之后的时间
    	fmt.Println(tomorrow)
    	
    	day_after_15 := now.AddDate(0, 0, -15)	// 15天之前的时间
    	fmt.Println(day_after_15)
    }
    

    程序执行结果

    2019-09-17 17:55:59.4755575 +0800 CST
    2019-09-01 17:55:59.4755575 +0800 CST
    

    总结:

    import (
    	"fmt"
    	"time"
    )
    
    func parse_datetime_to_timestr(t time.Time, flag int) string {
    	/**
    		把 datetime 转换成 时间字符串
    		t: datetime 时间,比如:2019-09-17 09:45:42.5962359 +0800 CST m=+0.003989201
    		flag: 标识位,决定输出的时间字符串的格式
    	 */
    	var time_str string
    	if flag == 1 {
    		time_str = t.Format("2006-01-02 15:04:05")
    	} else if flag == 2 {
    		time_str = t.Format("2006-01-02 15:04")
    	} else if flag == 3 {
    		time_str = t.Format("2006-01-02")
    	} else if flag == 4 {
    		time_str = t.Format("2006.01.02 15:04:05")
    	} else if flag == 6 {
    		time_str = t.Format("2006.01.02 15:04")
    	} else {
    		time_str = t.Format("2006.01.02")
    	}
    	return time_str
    }
    
    func parse_datetime_to_timestamp(t time.Time) int64 {
    	/**
    		把 datetime 转换成时间戳
    		t: datetime 时间
    	 */
    	return t.Unix()
    }
    
    func parse_timestr_to_datetime(time_str string, flag int) time.Time {
    	/**
    		把时间字符串转换成 datetime 时间
    		time_str: 时间字符串,比如:2019-09-17 15:04:05
    		flag: 标识位,决定输入的时间字符串的格式
    	 */
    	if flag == 1 {
    		t, error1 := time.Parse("2006-01-02 15:04:05", time_str)
    		if error1 != nil {
    			panic(error1)
    		}
    		return t
    	} else if flag == 2 {
    		t, error2 := time.Parse("2006-01-02 15:04", time_str)
    		if error2 != nil {
    			panic(error2)
    		}
    		return t
    	} else if flag == 3 {
    		t, error3 := time.Parse("2006-01-02", time_str)
    		if error3 != nil {
    			panic(error3)
    		}
    		return t
    	} else if flag == 4 {
    		t, error4 := time.Parse("2006.01.02 15:04:05", time_str)
    		if error4 != nil {
    			panic(error4)
    		}
    		return t
    	} else if flag == 5 {
    		t, error5 := time.Parse("2006.01.02 15:04", time_str)
    		if error5 != nil {
    			panic(error5)
    		}
    		return t
    	} else {
    		t, err := time.Parse("2006.01.02", time_str)
    		if err != nil {
    			panic(err)
    		}
    		return t
    	}
    }
    
    func parse_timestr_to_timestamp(time_str string, flag int) int64 {
    	/**
    		把时间字符串转换成时间戳
    		time_str: 时间字符串,比如:2019-09-17 09:45:42
    		flag: 标识位,决定传入的时间字符串的格式
    	 */
    	var t int64
    	loc, _ := time.LoadLocation("Local")
    	if flag == 1 {
    		t1, _ := time.ParseInLocation("2006.01.02 15:04:05", time_str, loc)
    		t = t1.Unix()
    	} else if flag == 2 {
    		t1, _ := time.ParseInLocation("2006-01-02 15:04", time_str, loc)
    		t = t1.Unix()
    	} else if flag == 3 {
    		t1, _ := time.ParseInLocation("2006-01-02", time_str, loc)
    		t = t1.Unix()
    	} else if flag == 4 {
    		t1, _ := time.ParseInLocation("2006.01.02", time_str, loc)
    		t = t1.Unix()
    	} else {
    		t1, _ := time.ParseInLocation("2006-01-02 15:04:05", time_str, loc)
    		t = t1.Unix()
    	}
    	return t
    }
    
    func parse_timestamp_to_timestr(stamp int64, flag int) string {
    	/**
    		把时间戳转换成时间字符串
    		stamp: 时间戳,比如:1568685105,调用此方法时需先声明为 int64 类型
    		flag: 标识位,决定输入的时间字符串的格式
    	 */
    	var time_str string
    	if flag == 1 {
    		time_str = time.Unix(stamp, 0).Format("2006-01-02")
    	} else if flag == 2 {
    		time_str = time.Unix(stamp, 0).Format("2006-01-02 15:04:05")
    	} else if flag == 3 {
    		time_str = time.Unix(stamp, 0).Format("2006-01-02 15:04")
    	} else if flag == 4 {
    		time_str = time.Unix(stamp, 0).Format("2006.01.02 15:04:05")
    	} else if flag == 5 {
    		time_str = time.Unix(stamp, 0).Format("2006.01.02 15:04")
    	} else {
    		time_str = time.Unix(stamp, 0).Format("2006.01.02")
    	}
    	return time_str
    }
    
    func parse_timestamp_to_datetime(t int64) time.Time {
        /**
    		时间戳转换成 datetime 时间
    	 */
    	return time.Unix(t, 0)
    }
    
    func get_after_day(day_range, flag int) time.Time {
    	/**
    		获取多少天,多少月或者多少年之前或之后的时间
    		day_range: 间隔的天数,月数或者年份数
    		flag: 决定是取天数,月数还是年数
    	 */
    	now := time.Now()
    	var tmp_day time.Time
    	if flag == 1 {
    		tmp_day = now.AddDate(day_range, 0, 0)
    	} else if flag == 2 {
    		tmp_day = now.AddDate(0, day_range, 0)
    	} else {
    		tmp_day = now.AddDate(0, 0, day_range)
    	}
    	return tmp_day
    }
    
    func get_after_time(time_range string) time.Time {
    	/**
    		获取多少小时,分钟及秒之前或之后的时间
    		time_range: 时间差,比如:
    			10h 	获取10小时之后的时间
    			-10h 	获取10小时之前的时间
    			10m		获取10分钟之后的时间
    			-10m	获取10分钟之后的时间
    			10s		获取10秒之后的时间
    			-10s	获取10秒之后的时间
    	 */
    	m, _ := time.ParseDuration(time_range)
    	tmp := time.Now().Add(m)
    	return tmp
    }
    
    func get_current(t time.Time) {
    	current_year := t.Year() //	获取年份
    	fmt.Println(current_year)
    
    	current_month := t.Month() //	获取月份
    	fmt.Println(current_month)
    
    	current_day := t.Day() //	获取天数
    	fmt.Println(current_day)
    
    	current_hour := t.Hour() //	获取小时数
    	fmt.Println(current_hour)
    
    	current_minute := t.Minute() //	获取分钟数
    	fmt.Println(current_minute)
    
    	current_second := t.Second() //	获取秒数
    	fmt.Println(current_second)
    
    	current_nanosecond := t.Nanosecond() //	获取纳秒数
    	fmt.Println(current_nanosecond)
    }
    
  • 相关阅读:
    Java高级之类结构的认识
    14.8.9 Clustered and Secondary Indexes
    14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器
    14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构
    14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用
    14.8.1 Creating InnoDB Tables 创建InnoDB 表
    14.7.4 InnoDB File-Per-Table Tablespaces
    14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小
    14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小
    14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB
  • 原文地址:https://www.cnblogs.com/renpingsheng/p/11532190.html
Copyright © 2011-2022 走看看