将NodaTime转换为Unix时间戳以及LocalDateTime的重要性

2024-01-12

我目前正在使用 NodaTime,因为我对 C# 中的时区处理感到沮丧DateTime班级。到目前为止,我真的很高兴。

public static string nodaTimeTest(string input)
{
    var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.Zero);
    var pattern = OffsetDateTimePattern.Create("yyyy-MM-dd'T'HH:mm:sso<m>", CultureInfo.InvariantCulture, defaultValue);
    var result = pattern.Parse(input).Value;

    return result.ToString();
}

我有三个具体问题。上面是我在解析日期时间字符串时使用的方法。我有一个format字符串允许我如何解析输入。我的问题是:


我的事重要吗LocalDateTime(..)是?我使用的方法是Matt Johnson的Stackexample https://stackoverflow.com/a/21300317/1913389,他的来了日期2000, 1, 1, 0, 0。我认为这很奇怪,因为我知道的大多数日期类都使用纪元时间1970, 1, 1, 0 ,0,所以我更改了方法以包含纪元日期,但输出是相同的:


如何将时间转换为 Unix 时间戳?似乎没有内置方法可以做到这一点。


使用此方法:

    public static string nodaTimeTest6(string input, int timeZone)
    {
        // var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.Zero);
        var defaultValue = new OffsetDateTime(new LocalDateTime(2000, 1, 1, 0, 0), Offset.FromHours(timeZone));
        var pattern = OffsetDateTimePattern.Create("yyyy-MM-dd'T'HH:mm:sso<m>", CultureInfo.InvariantCulture, defaultValue);
        var result = pattern.Parse(input);

        return result.Value.ToString();
    }

我正在用这种方法测试 NodaTime 的能力——具体来说,我想知道我是否可以解析内部定义了偏移量的日期/时间,同时,我的timeZone输入还允许输入时区/偏移量。有趣的是,我的输入timeZone被忽略,所以我的输出中的偏移量nodaTimeTest6是输入日期字符串:

这是期望的行为吗?


我的 LocalDateTime(..) 是什么重要吗?

  • The OffsetDateTimePattern.Create方法需要一个默认值。仅当解析失败并且您没有检查时才使用它result.Success使用前result.Value.

  • 其他模式具有不需要默认值的重载(请参阅问题#267 https://code.google.com/p/noda-time/issues/detail?id=267)。我选择了特定的默认值2000-01-01T00:00:00.0000000+00:00因为它类似于其他模式使用 https://code.google.com/p/noda-time/source/browse/src/NodaTime/Text/LocalDateTimePattern.cs#25当您没有明确指定默认值时。

  • 不过确实没有什么意义。您可以使用任何您想要的默认值。

如何将时间转换为 Unix 时间戳?似乎没有内置方法可以做到这一点。

  • The result.Value is an OffsetDateTime. The Instanttype 使用 Unix 纪元,所以你可以这样做:

    int unixTime = result.Value.ToInstant().Ticks / NodaConstants.TicksPerSecond;
    
  • 请注意,Unix 时间戳精确到最接近的秒。如果你要传递给 JavaScript,你会想使用TicksPerMillisecond并将其返回long.

...我想知道我是否可以解析内部定义了偏移量的日期/时间,同时,我的timeZone输入还允许输入时区/偏移量。

  • 抱歉,但我不完全明白你在这里问什么。你能澄清一下吗?

  • 从您提供的代码来看,您似乎将默认值的偏移量与输入字符串的偏移量混淆了。仅当解析时才使用默认值fails.

  • 如果您想控制偏移量而不是将其包含在输入中,请使用LocalDateTimePattern而不是OffsetDateTimePattern进行解析。解析后,您可以将其与特定区域关联。

  • 另外,请注意您的命名约定。int timeZone没有意义(这是偏移量,而不是时区)。也许int offsetHours,或者更好的是,Offset timeZoneOffset.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将NodaTime转换为Unix时间戳以及LocalDateTime的重要性 的相关文章

  • 使用 ## 和 __LINE__ 创建 C 宏(与定位宏的标记串联)

    我想创建一个 C 宏来创建一个基于名称的函数 在行号上 我想我可以做类似的事情 真正的函数在大括号内有语句 define UNIQUE static void Unique LINE void 我希望能扩展到类似的内容 static voi
  • 函数“sum”的隐式声明在 C99 中无效

    我一直在寻找解决方案 但没有找到任何有帮助的东西 我收到以下错误 Implicit declaration of function sum is invalid in C99 Implicit declaration of function
  • 基于多线程的 RabbitMQ 消费者

    我们有一个 Windows 服务 它监听单个 RabbitMQ 队列并处理消息 我们希望扩展相同的 Windows 服务 以便它可以监听 RabbitMQ 的多个队列并处理消息 不确定使用多线程是否可以实现这一点 因为每个线程都必须侦听 阻
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • 如何修复此 YCrCb -> RBG 转换公式?

    我使用的公式来自这个问题 https stackoverflow com questions 8838481 kcvpixelformattype 420ypcbcr8biplanarfullrange frame to uiimage c
  • 公共基类打破了元组的空基类优化

    gcc 4 7 1 对元组进行空基类优化 我认为这是一个非常有用的功能 然而 这似乎有一个意想不到的限制 include
  • 无法在 Visual Studio 和 vcpkg 中构建 cmake 项目(致命错误 C1083)

    我今天安装了vcpkg 启用了与Visual Studio的集成 即 vcpkg集成安装 并开始安装库 我基本上安装了 cpprestsdk 并触发了 boost 库的安装 然后我在 Visual Studio CMake 中打开该项目 当
  • Xcode 新手无法用 C++ 打开文件?

    我一直在我参加的课程中使用 Windows 但我正在尝试运行基本代码来弄清楚如何从 Xcode 上的文件打开 关闭 输入 输出 而我通常在 Visual Studio 上使用的代码不是不知道为什么 谢谢 include
  • 使用 ClosedXML 附加到 excel 文件

    我需要将新数据附加到使用 ClosedXML 创建的现有 Excel 文件中 如何使用 ClosedXML 附加到 Excel 文件 如何获取最后一条记录的行号并将其附加到该行号上 或者还有其他内容 Thanks 打开现有工作簿 然后使用L
  • 指向 VLA 的指针

    你可能知道 VLA 的优点和缺点 https stackoverflow com a 3082302 1606345在 C11 中它们是可选的 我认为使 VLA 成为可选的主要原因是 堆栈可能会爆炸 int arr n where n 10
  • C# SignalR 异常 - 连接在收到调用结果之前开始重新连接

    我正在开发 2 个应用程序 第一个是 C 控制台应用程序 另一个是 Asp net Web 应用程序 我正在使用 SignalR 连接两者 这是我的 C 控制台应用程序 客户端 public class RoboHub public sta
  • 我应该使用 Helgrind 还是 DRD 进行线程错误检测?

    好像Valgrind http valgrind org docs manual manual html有两个工具都可以进行线程错误检测 Helgrind http valgrind org docs manual hg manual ht
  • 使用 C# 的异步 WebRequest

    您好 我有一个函数 它将 url Get 参数传递到网络服务器上的 php 文件 并等待文件的响应 通常需要 10 20 秒 我想将其放入一个循环中 因为我必须一次将这些 Get 请求发送到大约 5 个不同的 php 文件 但是当我尝试将其
  • 在 boost 元组、zip_iterator 等上使用 std::get 和 std::tie

    我有哪些使用选择std get lt gt and std tie lt gt 与增强结构一起 例子 我想使用基于范围的 for 循环在多个容器上进行迭代 我可以实施zip函数 它使用boost zip iterator include
  • 为什么将未使用的返回值转换为 void?

    int fn void whatever void fn 是否有任何理由将未使用的返回值强制转换为 void 或者我认为这完全是浪费时间 David s answer https stackoverflow com questions 68
  • 没有 FPU 的处理器中的浮点计算

    是否可以在没有浮点单元的嵌入式处理器中执行浮点运算 是的 您只需要在软件中完成即可 你的编译器可能会提供支持 http gcc gnu org onlinedocs gccint Soft float library routines ht
  • 为什么在 C++ 类中的数据成员上使用像 m_ 这样的前缀?

    许多 C 代码使用语法约定来标记数据成员 常见的例子包括 m memberName对于公共成员 在所有使用公共成员的情况下 memberName对于私人会员或所有会员 其他人尝试强制使用this gt member每当使用数据成员时 根据我
  • 智能感知不显示评论

    如果我在 Visual Studio 2010 中输入类似的内容数据集1 我得到所有可用方法和属性的列表 智能感知 这很好用 但是 如果我在此列表中选择一个方法或属性 我不会得到 if 的描述 例如 如果我有类似的东西 public cla
  • 为什么 getch 不可移植?

    是什么使得 getch 本质上无法作为标准 C 函数包含在内 对于控制台界面来说 它是如此直观和优雅 如果没有它 要求输入单个字符总是会产生误导 因为用户可以输入多个键 更糟糕的是 您经常需要确保在读取控制台输入后清除标准输入 这甚至不是作

随机推荐

  • Slack 应用程序和本地存储

    我们正在计划一个 Slack 应用程序 但我们需要本地存储 我们不想在我们的服务器上存储用户 频道的任何数据 我们希望将其永久或临时保存在用户的本地计算机或 Slack 服务器中 有办法做吗 Thanks 以下是我对这个主题的想法 本地存储
  • GWT 和 Vaadin 之间的差异

    谁能建议 GWT 或 Vaadin 是否是设计应用程序的更好选择 另外 编码风格有什么区别 在 GWT 中 应用程序逻辑通常在客户端运行 它仅在需要读取 保存某些数据时调用服务器 在 Vaadin 中 应用程序逻辑位于服务器端 每次用户交互
  • 添加 IPV6_V6ONLY 标志的动机是什么?

    在 IPv6 网络中 IPV6 V6ONLY 标志用于确保套接字仅使用 IPv6 特别是 IPv4 到 IPv6 的映射不会用于该套接字 在许多操作系统上 默认情况下未设置 IPV6 V6ONLY 但在某些操作系统 例如 Windows 7
  • 报告 API 503 后端错误

    在过去的几周里 我用来从报告 API 检索用户使用情况报告的批处理任务一直失败 并出现以下响应 com google api client googleapis json GoogleJsonResponseException 503 OK
  • Docker:无法连接 Spring Boot 和 MYSQL

    我尝试使用 Dockerfile 或 Docker compose 将我的项目容器化 首先 我使用命令从 mysql 创建容器 docker run name ms p 3306 3306 e MYSQL ROOT PASSWORD pas
  • 按模型的属性(而不是字段)对 Django QuerySet 进行排序

    一些代码和我的目标 我的 简化的 模型 class Stop models Model EXPRESS STOP 0 LOCAL STOP 1 STOP TYPES EXPRESS STOP Express stop LOCAL STOP
  • 将字符添加到频率列表

    我有一个关于霍夫曼编码的项目 但我陷入困境 我不明白为什么我的代码不起作用 这是练习 写一个函数add1给定一个字符 它在频率列表中的频率加 1 如果该字符尚未出现在频率列表中 则会添加该字符 add1 e l 1 e 2 x 1 l 1
  • 连接到 SQL Server 时出现 SQL 异常

    我知道这是一个重复的问题 我发现了非常相似的问题和解决方案 但仍然让我震惊 我正在使用 eclipse 将我的 java 应用程序与 microsoft sql server 2008 数据库连接 以下是我的代码 import java s
  • 使用 JPQL 过滤具有唯一 ID 的重复记录

    我正在查询一个维护不善的建筑物数据库 其记录类似于以下内容 ID NAME CODE 54 Building A a1234 97 Building A a1234 我正在使用以下 JPQL 语句进行查询 其中 bCodes 是建筑代码数组
  • 如何检测Android H.264硬件加速能力

    大量 但不是全部 Android 设备支持 H 264 视频编解码器的硬件加速 但不支持 VP8 VP9 编解码器 为了提供更高质量的用户体验 我们希望尽可能选择硬件加速的编解码器 因此 需要运行时检测特定设备是否具有 H 264 硬件加速
  • 如何将 JSON 转换为数组并在 jQuery 中循环遍历它?

    我正在使用 JSON 与用户进行通信 PHP 将数组转换为 JSON 的形式如下 success text to display warning NONE notice text to display error NONE jQuery 显
  • OS X Dock API?检索 OS X 活动应用程序的图标以及徽章和其他修改

    是否有 API 用于检索 Mac OS X 上当前打开的应用程序的图标 我正在尝试检索活动应用程序的所有图标以及应用程序顶部的任何徽章 即邮件中的新消息数量或传输中的当前下载速率 有某种 Dock API 吗 我能找到的唯一提到用于检索当前
  • Chrome 中的默认输入边框

    默认情况下 输入元素的样式为border 2px inset 但是 只要背景是白色 边框就会显示为细灰色线 带有 eee颜色 但如果我改变背景 即使是最轻微的 例如 feffff 边界突然改变为你所期望的2px inset 是什么导致了这种
  • 将十六进制字符串转换(解码)为 ASCII 或任何其他可理解的格式 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 b 7668647866696c654d006900630072006f0073006f00660074002000570069006e00
  • 我如何让 Eclipse 将 .ejs 文件解释为 .html?

    我最近开始了一个节点项目 我使用的两个模块是express和EJS 但默认情况下我通常使用 eclipse 作为我的 IDE 它对于 java 运行良好 对于 html 和 javascript 也很不错 但我遇到的一个问题是 对于 ejs
  • 在 Vim 中打开特定文件的快捷方式?

    有没有办法在我的系统中配置快捷方式 vimrc自动在新缓冲区中打开特定文件 我有一个经常需要访问的文件 我想在编码或写入会话期间在新缓冲区中快速打开该文件 我并不是在寻找可以使用 Command T 或 PeepOpen 实现的模糊搜索 而
  • Android 发送包含 PDF 文件的邮件

    我正在尝试发送位于设备上文件夹中的 PDF 文件 文件已选择并发送 但它是空的 我哪里错了 String inviare n fr getText toString Uri uri Uri fromFile new File Environ
  • 如何在数据表中创建可水平滚动的单元格

    这是 PrimeFaces 的情况 但我认为这个问题同样适用于标准 JSF 数据表 我有一个数据表列 其中的条目被自动换行 因为内容可能很长 为了使显示更具可读性 我希望内容不被换行 而是提供水平滚动来查看默认情况下不显示的任何内容 我确信
  • Gson 中的 Stackoverflow 异常

    我正在尝试使用 Gson 库将 Json 字符串解析为 Java 对象 但遇到了 StackoverflowException java lang StackOverflowError com google gson internal Gs
  • 将NodaTime转换为Unix时间戳以及LocalDateTime的重要性

    我目前正在使用 NodaTime 因为我对 C 中的时区处理感到沮丧DateTime班级 到目前为止 我真的很高兴 public static string nodaTimeTest string input var defaultValu