- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 C# 中实现 CTime::GetTime()
方法的行为。
这是我的控制台应用程序的代码片段(用 C++/CLI 编写):
int main(array<System::String ^> ^args)
{
int epochYear = 1970;
int epochMonth = 1;
int epochDay = 1;
DateTime managedEpochDate = DateTime(epochYear, epochMonth, epochDay);
int year = 2013;
int month = 2;
int day = 13;
int hour = 9;
int minutes = 49;
int seconds = 46;
// DateTime/CTime -> Numeric Time (__time64_t)
DateTime managedDateTime = DateTime(year, month, day, hour, minutes, seconds);
CTime nativeDateTime = CTime(year, month, day, hour, minutes, seconds);
DWORD nativeTimeToSerialize = nativeDateTime.GetTime();
UInt32 managedTimeToSerialize = (managedDateTime - managedEpochDate)
.TotalSeconds;
}
最后我有以下不同的值:
任何人都可以帮助我理解这种差异的原因吗?
最佳答案
不同之处在于 CTime
constructor您正在使用将时间转换为 UTC:
This constructor makes the appropriate conversion to UTC.
而 DateTime
在这种情况下,构造函数(和 other 一个)不知道时区:
The
Kind
property is initialized toDateTimeKind.Unspecified
.
subtraction operator DateTime
也不考虑时区:
The
Subtraction(DateTime, DateTime)
method does not consider the value of theKind
property of the twoDateTime
values when performing the subtraction.
要获得所需的结果,请适本地设置 CTime
构造函数的最后一个参数,例如:
CTime nativeDateTime = CTime(year, month, day, hour, minutes, seconds, 0);
要修改 DateTime
用法,您需要:
int epochYear = 1970;
int epochMonth = 1;
int epochDay = 1;
DateTime managedEpochDateUtc
= new DateTime(epochYear, epochMonth, epochDay, 0, 0, 0, DateTimeKind.Utc);
int year = 2013;
int month = 2;
int day = 13;
int hour = 9;
int minutes = 49;
int seconds = 46;
DateTime managedDateTimeLocal
= new DateTime(year, month, day, hour, minutes, seconds, DateTimeKind.Local);
DateTime managedDateTimeUtc = managedDateTimeLocal.ToUniversalTime();
uint managedTimeToSerialize = (uint)(managedDateTimeUtc - managedEpochDateUtc)
.TotalSeconds;
或者,按照 Mgetz 的建议你可以使用 DateTimeOffset
而不是 DateTime
,通常推荐使用 DateTime
doesn't handle timezones very clearly .
关于c# - 在 C# 中实现与 CTime.GetTime() 方法相同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589831/
我对 glibc ctime() 的工作原理有疑问。 按照我的代码片段: #include #include #include int main (int argc,char*
当我使用“ctime”时,curTime 和 pastTime 得到相同的字符串结果,即使 curTime 和 pastTime 的实际值相差 600 秒。 使用 ctime 时如何为两者获得相同的字
我有这个unix时间戳,使用ctime转换后显示为Thu Mar 26 15:30:26 2007,但我只需要Thu Mar 26 2007。 如何更改或截断以消除时间 (HH:MM:SS)? 最佳答
我在文本文件中插入时间时遇到问题。我使用以下代码得到 |21,43,1,3,10,5| Wed Feb 01 20:42:32 2012 这是正常的,但我想做的是将时间放在数字之前,例如 Wed Fe
我已将 ctime 值转换为 unicode 1295478503.6789999到'2011 年 1 月 19 日星期三 18:08:23' 我可以倒退吗?从第二行到第一行? 最佳答案 您需要 Py
ctime()函数应该给出自 Epoch 以来传入的秒数的字符串格式时间。这是我的代码: #include #include #include int main(int argc, int **arg
#include #include #include using namespace std; #define WIDTH 118 #define HEIGHT 60 void clearScr
我在将 ctime 字符串转换为 %Y-%m-%d 格式时遇到问题。 fileobject = "C:\\foo\\bar.txt" filetime = time.ctime(os.path.get
你好, 我有以下代码: int main () { time_t rawtime; time ( &rawtime ); printf ( "The current local time
我正在尝试更改我的 unix 时间戳的格式。但我没有看到任何自定义格式的选项。 这是我的代码: tempstring = "Your last login was: "; time_t lastLog
我正在使用 ctime。但是它总是返回 NULL。所以它以 sprintf 行为核心。它工作得更早。所以不确定为什么会随机返回 NULL? 我有以下代码片段: int main() { cha
如果用户类型time_t定义为__darwin_time_t,在MacOS X中它本身定义为long,为什么会出现下面的代码输出8 时间是(null)?也许这很愚蠢,但我真的无法理解。 #includ
我正在使用 ctime。但是它总是返回空值。所以它以 sprintf 线为核心。它工作得更早。所以不确定为什么它会随机返回 null。 我有以下代码片段: int main() { char avp
这是代码: void i_log_ (int error, const char * file, int line, const char * fmt, ...) { /* Get erro
标准 C ctime 函数是否返回公历日期?特别是,我想验证它是否会考虑闰年,从而显示相应日期的 Feb 29。 最佳答案 对于 future 和最近的时间,是的。对于公历改革之前的时间...我不知道
我有这样一个函数: void ft_display_time(struct timespec ttime) { char *time_long; time_long = cti
我试图让一个循环在 executionTime 指定的准确时间执行。我正在使用 ctime 来获得这个时间,我需要它在几毫秒的精度内(我相信它是)。一旦该循环运行了指定的执行时间,它就会中断。 我的问
我正在寻找 的 C++11 版本图书馆。 C++11 中有这样的东西吗? 编辑:任何具有更多功能的东西都是完美的! 编辑 2:我希望将其与我正在制作的游戏一起使用,以便我可以跟踪玩的总时间。我正在寻
我正在使用 ctime函数来获取 time_t 变量的可读表示。 ctime声明如下: char *ctime (const time_t *timer); 你可以看到它返回了一个指向结果 char
linux下的find命令在目录结构中搜索文件,并执行指定的操作。linux下的find命令提供了相当多的查找条件,功能很强大,由于find的功能很强大,所以他的选项也很多,今天我们来细说一下fin
我是一名优秀的程序员,十分优秀!