![](/img/trans.png)
[英]What are equivalent C# data types for SQL Server's date, time and 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.