簡體   English   中英

Go中的C#DateTimeOffset等效項是什么

[英]What is the C# DateTimeOffset equivalent in Go

我有以下代碼,該代碼將字符串作為輸入,並轉換為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

有人可以幫我解決這個問題,以獲得上述結果。

謝謝

我相信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()

例如,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM