首页 > 其他分享 >golang将时间转为时间戳碰到的问题

golang将时间转为时间戳碰到的问题

时间:2024-03-08 18:35:38浏览次数:22  
标签:00 err golang Unix 时间 time 字符串 转为

golang将字符串"2024-03-07 16:00:00"转为时间戳

代码如下:

package main  
  
import (  
    "fmt"  
    "time"  
)  
  
func main() {  
    // 定义时间格式,与字符串中的时间格式匹配  
    const layout = "2006-01-02 15:04:05"  
      
    // 要转换的时间字符串  
    str := "2024-03-07 16:00:00"  
      
    // 解析时间字符串  
  t, err := time.ParseInLocation(layout, str, time.UTC)
  if err != nil {  
        panic(err) // 如果解析出错,则抛出panic  
    }  
      
    // 转换为Unix时间戳(秒)  
    timestamp := t.Unix()  
      
    // 打印时间戳  
    fmt.Println(timestamp)  
}

在这个例子中,layout常量定义了时间的格式,它必须与字符串"2024-03-07 19:00:00"的格式相匹配。time.Parse函数用于解析这个时间字符串,并返回一个time.Time类型的值。然后,t.Unix()方法将这个time.Time值转换为Unix时间戳(秒为单位)。

如果字符串中的时间是本地时间,并且你想要获得UTC时间戳,你应该先调用t.UTC(),然后再调用Unix()方法。但是,如果字符串中的时间已经是UTC时间,那么你可以直接调用t.Unix()而不需要额外的转换。在这个例子中,没有提及字符串时间是本地时间还是UTC时间,所以我们假设它代表的就是给定的时间点,不进行任何时区转换。如果需要转换,可以在解析之后根据具体情况添加时区转换的逻辑。

但是!!!最终输出了:1709913600

比实际的:1709884800多了八个小时,问题:在解析时间字符串,(time.ParseInLocation)的时候不应该使用time.UTC,应该使用time.Local

最终代码:

 

package main  
  
import (  
    "fmt"  
    "time"  
)  
  
func main() {  
    // 定义时间格式,与字符串中的时间格式匹配  
    const layout = "2006-01-02 15:04:05"  
      
    // 要转换的时间字符串  
    str := "2024-03-07 16:00:00"  
      
    // 解析时间字符串  
  t, err := time.ParseInLocation(layout, str, time.Local)
  if err != nil {  
        panic(err) // 如果解析出错,则抛出panic  
    }  
      
    // 转换为Unix时间戳(秒)  
    timestamp := t.Unix()  
      
    // 打印时间戳  
    fmt.Println(timestamp)  
}

 

输出正确!

 

标签:00,err,golang,Unix,时间,time,字符串,转为
From: https://www.cnblogs.com/T8888/p/18061613

相关文章

  • golang进阶之反射
    目录一、go中变量的内在机制二、反射1.反射是把双刃剑2.反射的简介三、reflect库1.reflect.TypeOf(1)reflect.Type的name和kind(2)kind的能返回的类型如下2.reflect.ValueOf(1)反射取值(2)反射改值3.isNil()和isValid()四、结构体的反射1.StructField类型2.结构体反射示例(1......
  • el-date-picker type=datetime时设置默认时间
    vue2设置默认时间<el-date-pickerv-model="value3"type="datetime"placeholder="选择日期时间"default-time="12:00:00"></el-date-picker>vue3设置默认时间<el-date-pickerv-model=&q......
  • Golang使用SSE(EventSource)
    gopackagemainimport( "fmt" "gopkg.in/antage/eventsource.v1" "log" "net/http" "time")funcmain(){ es:=eventsource.New(nil,nil) deferes.Close() http.Handle("/",http.FileServe......
  • 从数据库中随机选取数据(基于golang,xorm)
    一、 从MySQL数据库中随机选取数据,可以使用SQL的 ORDERBYRAND() 语句来实现。具体步骤如下:定义一个结构体用于存储数据typeUserstruct{Idint64NamestringAgeint}建立与数据库的连接,并获取一个 Engine 实例engine,err:=xorm.NewE......
  • Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间
    Java用户输入(Scanner)简介Scanner类用于获取用户输入,它位于java.util包中。使用Scanner类要使用Scanner类,请执行以下步骤:导入java.util.Scanner包。创建一个Scanner对象,并将其初始化为System.in。使用Scanner对象的方法读取用户输入。示例importjava.ut......
  • golang项目用k8s部署的流程
    摘要:本文将详细介绍如何使用Kubernetes(K8S)部署一套Golang微服务项目,并给出了完整的实施步骤和相应代码示例,旨在指导刚入行的开发者完成这一任务。一、整体流程下面是使用K8S部署Golang微服务项目的整体流程,我们将在接下来的内容中详细介绍每一步骤。1.准备容器镜像2.创建K8S集......
  • 21_Unix时间戳
    Unix时间戳介绍UTC/GMT时间戳转换......
  • Java取当前时间的一分钟后,并格式化输出
    1.Java1.8以前Calendarinstance=Calendar.getInstance();//获取当前日期时间instance.add(Calendar.MINUTE,1);//加1分钟System.out.println(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(instance.getTime()));2.Java1.8及以后System.out.println(DateTimeFor......
  • 万字长文讲解Golang pprof 的使用
    往期好文推荐⭐️⭐️⭐️:#golangpprof监控系列(1)——gotrace统计原理与使用#golangpprof监控系列(2)——memory,block,mutex使用#golangpprof监控系列(3)——memory,block,mutex统计原理#golangpprof监控系列(4)——goroutinethread统计原理#golangpprof......
  • MySQL 的 datetime 日期类型,以当前时间作为初始默认值
     1.以当前时间作为默认值使用DEFAULTCURRENT_TIMESTAMP声明字段,插入记录时不用指定dt,自动置入当前时间CREATETABLEt1(dtDATETIMEDEFAULTCURRENT_TIMESTAMP); 2.以当前时间作为默认值以及更新值使用ONUPDATECURRENT_TIMESTAMP声明字段,修改记录时dt自......