当前位置: 首页 > 面试题库 >

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

谷光誉
2023-03-14
问题内容

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

有人可以帮我解决这个问题,以获得上述结果。

谢谢


问题答案:

例如,

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


 类似资料:
  • 问题内容: 在TSQL中,我可以声明: 在MySQL中,我无法编写相同的查询。 在MySQL中编写此查询的正确方法是什么? 问题答案: 行尾的分号。

  • 问题内容: Golang中C ++的等效功能是什么? 根据这里的问题,我可以得到以下声明: 但这将导入整个名称空间。现在我只想使用诸如定义之类的东西 Go中有与此等效的功能,因此我不必一直输入吗? 问题答案: 以下代码在可读性方面接近,但效率较低,因为编译器无法再内联函数调用。 而且,它具有输入名称的副作用,并到该文件的范围,这恐怕是C ++的没有做。

  • 问题内容: 我想保持我的依赖关系为最新。使用Node.js,我运行(及更高版本)。 Go mod最接近的是什么? 理想情况下,我会看到有关项目的过时依赖关系的报告(并非全部都是递归的)。谢谢 问题答案: 列出直接和间接依赖 Go 1.11模块:如何升级和降级依赖项 Wiki中对此进行了详细说明: 要查看所有直接和间接依赖项的可用次要和补丁升级,请运行。 要将当前模块的所有直接和间接依赖关系升级到最

  • 问题内容: 在C / C ++(以及该家族的许多语言)中,根据条件声明和初始化变量的常用习语使用三元条件运算符: Go没有条件运算符。实现与上述相同代码的最惯用方式是什么?我来到以下解决方案,但似乎很冗长 有更好的东西吗? 问题答案: 正如指出的那样(并希望毫不奇怪),使用确实是Go 语言中进行条件处理的惯用方式。 但是,除了完整的代码块之外,还经常使用以下拼写: 并且如果您有足够重复的代码块(例

  • 问题内容: MSDN中AutoResetEvent的描述 我正在尝试将在C#中实现的线程池移植到Linux下的C ++。我不知道应该使用哪些行为与“ AutoResetEvent”类似的函数。 问题答案: AutoResetEvent最类似于二进制信号量。人们说“条件变量”本身并没有错,但是条件变量用于类似的情况,而不是类似的对象。您可以在条件变量之上实现一个(未命名的)AutoResetEven

  • 问题内容: C ++等于什么? 问题答案: 在C 中没有与此等效的方法,尝试在C 中进行Java编程毫无意义。话虽如此,我将从尝试尽可能模仿陈述的赋值特征和精神的角度来探讨这一问题。我建议的每种方式都有缺点和局限性。前两个不是真正的惯用C ++,但是了解它们很重要,以了解后两个解决了哪些问题。 1. C样式的void指针。 让我从最基本,最有用的空指针开始: 可以从new运算符将任何东西分配给vo