如何将 DateTime 转成 UnixTime ?

咨询区

  • Slider345

我尝试将 C# 的 DateTime 转为 Unix 时间,但是 Unix 统计的是 1970.1.1 到现在的秒数,貌似 DateTime 统计的是 0001.1.1 到现在的 ticks 数。

我目前能想到的是从现在减去 1970.1.1 从而获取 totalSeconds ,比如下面代码:

TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0));
return span.TotalSeconds;

请问是否有更好的解决办法?

回答区

  • Dave Swersky

其实这个很好实现,我大概有两种解决方案。

  1. 自己实现将 DateTime 转成 UnixTime。

public static DateTime ConvertFromUnixTimestamp(double timestamp)
{DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);return origin.AddSeconds(timestamp);
}public static double ConvertToUnixTimestamp(DateTime date)
{DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);TimeSpan diff = date.ToUniversalTime() - origin;return Math.Floor(diff.TotalSeconds);
}
  1. 使用内置函数

如果你的项目是基于 .NET Core 2.1 或者 .NET Standard 2.1 之上的话,DateTime 提供了一个 UnixEpoch 属性,它就表示 1970.1.1

public readonly struct DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, ISerializable{//// Summary://     The value of this constant is equivalent to 00:00:00.0000000 UTC, January 1,//     1970, in the Gregorian calendar. System.DateTime.UnixEpoch defines the point//     in time when Unix time is equal to 0.public static readonly DateTime UnixEpoch;}
  • codeMonkey

如果你运行程序的电脑的时区没有问题的话,建议用 DateTimeOffset 替代 DateTime, 这个类下有一个 ToUnixTimeSeconds() 方法,就是用来获取 1970-01-01T00:00:00Z 到现在的秒数,参考如下代码:

static void Main(string[] args){long unixSeconds = DateTimeOffset.Now.ToUnixTimeSeconds();Console.WriteLine(unixSeconds);}

顺便提一下,上面这种方式只适合 .NET Framework 4.6 以上的版本,如果你的项目版本太低的话,那还是需要手工指定一下,比如下面这样。

public static void Main(){TimeSpan span = DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));Console.WriteLine(span.TotalSeconds);}

更多细节可参考MSDN:https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset.tounixtimeseconds?redirectedfrom=MSDN&view=net-5.0#System_DateTimeOffset_ToUnixTimeSeconds

点评区

记得当年和 PHP 开发的程序对接口时,就经常会遇到这种 UnixTime 的问题,没想到有这么多解法,学习了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AsyncTask的基础讲解

Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //异步任务AsyncTask,只能执行一次&#xff0c;在一个线程里面不能多次执行 //耗时操作(网络&#xff0c;数据库操作)一般用子线…

Android之BaseAdapter—convertView回收机制与动态控件响应

前言&#xff1a;对于listView的BaseAdapter的派生&#xff0c;难度比较大。最难理解的莫过于getView(int position, View convertView, ViewGroup parent)这个函数是如何产生每条记录的&#xff0c;有些博客中利用holderView&#xff0c;有些博客却没有用&#xff0c;种种方法…

刚刚还在做菜,瞬间人就没了!厨房里一定不要再做这些事

全世界只有3.14 % 的人关注了爆炸吧知识厨房是一个家最有生活气息的地方&#xff0c;即使在外面&#xff0c;只要闻到别人家厨房飘出的饭菜香味&#xff0c;就很让人想家。但是&#xff0c;如果不注意细节&#xff0c;厨房也容易酿成悲剧&#xff01;今天&#xff0c;给大家看几…

poj 3125 Printer Queue(STL注意事项)

http://poj.org/problem?id3125 这道题没什么突出的地方&#xff0c;是一道很水的题&#xff0c;可以用list&#xff0c;也可以用queue来解决。&#xff08;用list解决的代码我就不写了&#xff09;把它写上来&#xff0c;只是因为我在使用STL的时候犯了一个小错误&#xff0c…

TCTDB存储结构

TCTDB是tokyo cabinet家族中的表格数据库&#xff08;如上图&#xff09;&#xff0c;其实现基于TCHDB&#xff08;hash database&#xff09;和TCBDB(B-tree database)。TCHDB参考&#xff1a;http://blog.chinaunix.net/space.php?uid20196318&doblog&id327754 TCBD…

postgresql 分词_使用PostgreSQL进行中文全文检索

前言PostgreSQL 被称为是“最高级的开源数据库”&#xff0c;它的数据类型非常丰富&#xff0c;用它来解决一些比较偏门的需求非常适合。前些天将 POI 点关键词查询的功能迁到了 PgSQL&#xff0c;总算对前文 空间索引 - 各数据库空间索引使用报告 有了一个交代。由于 PgSQL 国…

Android之px 与 dp, sp换算公式

px: pixels(像素). 不同设备显示效果相同&#xff0c;一般我们HVGA代表320x480像素&#xff0c;这个用的比较多。 pt: point&#xff0c;是一个标准的长度单位&#xff0c;1pt&#xff1d;1/72英寸&#xff0c;用于印刷业&#xff0c;非常简单易用&#xff1b; sp: scaled pi…

05Prism WPF 入门实战 - Navigation

1.概要源码及PPT地址&#xff1a;https://github.com/JusterZhu/wemail视频地址&#xff1a;https://www.bilibili.com/video/BV1KQ4y1C7tg?share\sourcecopy\web本章分为以下三个部分来了解&#xff1a;Part1 视图导航、参数传递Part2 确认导航Part3 导航日志2.详细内容Part1…

常见的http状态码

400 Bad Request1、语义有误&#xff0c;当前请求无法被服务器理解。除非进行修改&#xff0c;否则客户端不应该重复提交这个请求。2、请求参数有误。401 Unauthorized当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客…

明明没PS,看起来却像PS过的32张照片

全世界只有3.14 % 的人关注了爆炸吧知识现在PS太普遍&#xff0c;以至于人们看到不同寻常的东西&#xff0c;第一时间会怀疑经过技术处理。但也有一些照片&#xff0c;真的没有PS过&#xff01;1、这些轮胎痕迹令人产生了3D的错觉&#xff1a;2、截然分开的几种景观&#xff0c…

python如何退出命令行_如何退出python命令行

命令行进入python打开cmd——>直接输入python即可直接进入PythonC:UsersAdministrator>pythonPython 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or &q…

TFS全局资源管理

在早期&#xff0c;应用要使用TFS&#xff0c;需要知道TFS名字服务器的地址才能访问TFS&#xff0c;然后调用读写接口存取文件&#xff0c;当应用比较少时&#xff0c;这种方式不会引发什么问题&#xff0c;但目前在淘宝内部&#xff0c;有200多个应用使用TFS做为后端的存储系统…

.net程序运行

contentoftable 目录数据库&#xff0c;把数据存到文件中&#xff0c;还要能有效的读出来。 保存到文件要以一定的结构。 判断数据--》保存到独立的文件夹。&#xff08;存的时候麻烦&#xff0c;读取的时候方便&#xff09; 记事本就是用控件。 应用程序要有pe头 &#xff0c;…

Android之内存溢出(Out Of Memory)的总结

图片越来越多,内存溢出已经成了不得不注意的问题了。 错误日志:11-03 12:36:54.812: ERROR/AndroidRuntime(5084): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 内存溢出主要由以下几种情况引起: 1.数据库的cursor没有关闭。 2.构造adapter没…

没有什么是日本牛郎店做不到的......

1 第一眼你看见了啥&#xff1f;▼2 确实很悲伤&#xff08;dy&#xff1a;李逍遥&#xff09;▼3 貌似真是这样▼4 我不爱打麻将咋办&#xff1f;▼5 短短十几个字&#xff0c;满满的江湖纷争▼6 少了男主的朋友不要轻易尝试▼7 哦吼▼8 双十一如你所愿&#xff0c;哈哈…

持续集成、持续交付(CI/CD)开篇,先来唠唠嗑

前言现在稍微有点规模的系统&#xff0c;很多都是采用分布式/微服务架构&#xff0c;将一个大系统拆分为很多个功能模块进行开发、测试、发布、管理等&#xff0c;如果全部流程都采用人工的形式进行的话&#xff0c;效率肯定是超级不高效滴。而且现在很多项目都采用极限编程的模…

100例经典炒菜_Python3经典100例(②)

实例6题目&#xff1a;斐波那契数列&#xff1b;分析&#xff1a;利用递归计算斐波那契数列&#xff0c;输入斐波那契数列的n位&#xff0c;调用递归计算出第n位的数列值&#xff1b;代码&#xff1a;#!/usr/bin/python3 # -*- coding: utf-8 -*- # Time : 2018-10-3 21:10 …

分享10个2012年最新发布的jQuery插件

为什么80%的码农都做不了架构师&#xff1f;>>> 日期&#xff1a;2012-5-9 来源&#xff1a;GBin1.com 本文收集了最新的jQuery社区发布的jQuery插件&#xff0c;绝对是你没有见过的&#xff0c;希望大家喜欢&#xff01; 1. SearchMeme 一个即时搜索的jQuery插件…

监考

中国近现代史纲要人资150230逸夫楼A2012016年1月11日周一14:00-15:50国际结算国金130430逸夫楼A2072016年1月11日周一16:20-18:10高等数学4会统专150130逸夫楼A4102016年1月12日周二14:00-15:50建筑结构与选型城规120131逸夫楼A2092016年1月12日周二16:20-18:10转载于:https://…

Android之解析XML总结(SAX、Pull、Dom三种方式)

常见的解析xml的方式有一下三种&#xff1a;SAX、Pull、Dom解析方式。最近做了一个android版的CSDN阅读器&#xff0c;用到了其中的两种&#xff08;sax,pull&#xff09;&#xff0c;今天对android解析xml的这三种方式进行一次总结。 今天解析的xml示例&#xff08;channels.x…