猿问

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

我有以下代码,它将字符串作为输入,并转换为 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


输出:1444878577


UTC 对应时间:10/15/2015 3:09:36 AM +00:00


有人可以帮助我解决方法以获得上述结果。


尚方宝剑之说
浏览 139回答 1
1回答

皈依舞

我相信这个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()
随时随地看视频慕课网APP

相关分类

Go
我要回答