为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的 C# DateTimeOffset 等价物是什么

Go 中的 C# DateTimeOffset 等价物是什么

Go
尚方宝剑之说 2021-11-15 16:41:39
我有以下代码,它将字符串作为输入,并转换为 UNIX 时间戳。我想在 golang 中做同样的事情,但我无法识别在 Go 中将提供等效于 DateTimeOffset 结构的结构或函数。class Program{    static void Main(string[] args)    {        var date = GetUtcTimestampFromAttribute();        Console.WriteLine(date);        if (date != null)        {            Console.WriteLine(ToUnixTimeStamp(date.Value));        }        Console.ReadKey();    }    public static DateTimeOffset? GetUtcTimestampFromAttribute()    {        var ticks = long.Parse("7036640000000");        Console.WriteLine(ticks);        return GetUtcTimestampFromTicks(ticks);    }    public static DateTimeOffset? GetUtcTimestampFromTicks(long ticks)    {        Console.WriteLine(new DateTimeOffset(ticks, TimeSpan.Zero));        return ticks != 0 ?            new DateTimeOffset(ticks, TimeSpan.Zero) :            (DateTimeOffset?)null;    }    public static long ToUnixTimeStamp(DateTimeOffset timeStamp)    {        var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);        return Convert.ToInt64((timeStamp - epoch).TotalSeconds);    }}例如:输入:635804753769100000输出:1444878577UTC 对应时间:10/15/2015 3:09:36 AM +00:00有人可以帮助我解决方法以获得上述结果。
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

我相信这个time包有你需要的一切,它是 IMO 最好的时间库,我用任何语言工作过。例子:


package main 


import(

    "fmt"

    "time"

)


func main(){


    // this is how you parse a unix timestamp    

    t := time.Unix(1444902545, 0)


    // get the UTC time

    fmt.Println("The time converted to UTC:", t.UTC())


    // convert it to any zone: FixedZone can take a utc offset and zone name

    fmt.Println(t.In(time.FixedZone("IST", 7200)))


}

编辑将时间对象转换回 unix 时间戳很简单:


t.Unix()

或者


t.UnixNano()


查看完整回答
反对 回复 2021-11-15
  • 1 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信