DateTime equivalent in C
DateTime equivalent in C
我试图在不引入大量C++.Net类的情况下,将.Net代码片段改编为优秀的旧C。它看起来像这样:
Int64 ticks = DateTime.Now.ToBinary();
WriteSigned64(address, ticks);
在为Win32进程编译的C/C++中,是否存在等效程序?我发现的唯一的东西是使用替代的和有点有限的32位结构。我还必须写这个字段才能与.Net版本兼容。
您可以使用在time.h
中声明的函数time_t time(time_t *t);
。它为您提供从大纪元开始的秒数(1970-01-01 00:00:00+0000(UTC))。
在所有合理更新的版本中,time_t
是64位整数。
它是一个C函数,但它可以从C++程序中调用。
没有任何直接的方法可以完成您的要求,并且仍然让它执行与您提供的代码完全相同的操作。
DateTime.ToBinary()
不仅仅是滴答声。它将DateTime
对象的Ticks
和Kind
属性编码为单个二进制值。请参阅MSDN上的文档。您可能还希望参考.NET参考源。
为了进行说明,请考虑以下C#代码:
DateTime dt = DateTime.Now;
Console.WriteLine(dt.Kind);
Console.WriteLine(dt.Ticks);
Console.WriteLine(dt.ToBinary());
样本输出:
Local
635476072989775339
-8587895711865000469
您还应该认识到,DateTime.Now
返回Local
类型,这意味着记号基于代码运行的计算机的本地时区。如果您从一个系统中提取记号(或二进制),并在具有不同时区的系统上重新创建DateTime
,您将获得与最初编码的值不同的值。
相比之下,time_t
和C/C++中大多数其他与时间相关的类型都是基于UTC的,因此该值没有歧义。
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Equivalent of OpenCv c++ api Vec2f,norm, acos in emgucv csha
- TrackPopupMenu equivalent in OS X
- MPI-Parallel HDF5: H5Pset_fapl_mpio equivalent in C++
- WIN32_FIND_DATA equivalent in Linux C++
- itertools.tee equivalent in Boost::Range?
- c++ BITMAPINFOHEADER biBitCount equivalent in C#
- RSA C++ equivalent in C#
- Vector2 equivalent in c++?
- Java varargs equivalent in C++
- NSNotificationCenter equivalent in C++
- DateTime equivalent in C
- MATLAB equivalent in c++
- Java HashSet equivalent in C++