Go中的C#DateTimeOffset等效值是多少

Go中的C#DateTimeOffset等效值是多少,c#,datetime,go,C#,Datetime,Go,我有下面的代码,它将字符串作为输入,并将其转换为UNIX时间戳。我想在golang中也这样做,但我无法识别将在Go中提供等效于DateTimeOffset结构的结构或函数 class Program { static void Main(string[] args) { var date = GetUtcTimestampFromAttribute(); Console.WriteLine(date); if (date != nu

我有下面的代码,它将字符串作为输入,并将其转换为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对应时间:2015年10月15日3:09:36 AM+00:00

有人能帮我找到一个解决方法来获得上述结果吗


谢谢

我相信
时间
软件包包含了您所需要的一切,它是我用任何语言使用过的最好的时间库。例如:

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()

比如说,

package main

import (
    "fmt"
    "time"
)

func TimeFromTicks(ticks int64) time.Time {
    base := time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix()
    return time.Unix(ticks/10000000+base, ticks%10000000).UTC()
}

func main() {
    fmt.Println(TimeFromTicks(635804753769100000))
}
输出:

2015-10-15 03:09:36.0091 +0000 UTC

我不想要时间分区输出。我需要一个Unix时间戳。我正在使用c#,但我无法将其作为go代码。@Prashant阅读lib文档,我只是给出了一个简化的示例。基本上是一个
time。time
对象可以以秒或纳秒的分辨率转换为unix时间戳。是的@not_a_Golfer,但我的问题是我无法将输入的数字转换为有效的time对象。@Prashant为什么不能?在我的示例中,我已经演示了如何做到这一点。你只需要把你的数字分成纳秒部分和秒部分,如果是纳米/微米分辨率。你能帮我把这个长的数字分成几部分吗。我无法理解如何拆分它。转换是否以两种方式工作?
2015-10-15 03:09:36.0091 +0000 UTC