相关疑难解决方法(0)

如何将日期字符串解析为c ++ 11 std :: chrono time_point或类似的?

考虑格式的历史日期字符串:

Thu Jan 9 12:35:34 2014
Run Code Online (Sandbox Code Playgroud)

我想将这样的字符串解析为某种C++日期表示,然后计算从那时起经过的时间量.

从结果持续时间我需要访问秒数,分钟数,小时数和天数.

这可以用新的C++ 11 std::chrono命名空间来完成吗?如果没有,我今天该怎么办呢?

我正在使用g ++ - 4.8.1,但据推测答案应该只针对C++ 11规范.

c++ date-parsing datetime-parsing c++11

41
推荐指数
2
解决办法
3万
查看次数

如何在c中将datetime转换为unix时间戳?

场景是:我使用libexif以"YYYY-MM-DD HH:MM:SS"格式获取日期时间.为了最大限度地降低节省成本,我想将日期时间转换为unix时间戳或类似,仅花费64位或32位.c有什么明确的方法吗?

c unix datetime timestamp

20
推荐指数
2
解决办法
5万
查看次数

mktime和tm_isdst

我在这里想到了很多不同的看法.

我看了man mktime:

 (A positive or zero value for tm_isdst causes mktime() to presume initially
 that summer time (for example, Daylight Saving Time) is or is not in
 effect for the specified time, respectively.  A negative value for
 tm_isdst causes the mktime() function to attempt to divine whether summer
 time is in effect for the specified time. 
Run Code Online (Sandbox Code Playgroud)

我的问题是,不tm_isdst应该-1让系统决定它的dst是否与代码成为dst不可知的那样?

我错过了什么吗?

c unix time freebsd mktime

14
推荐指数
2
解决办法
3万
查看次数

如何在C++中将ISO 8601字符串转换为time_t?

有谁知道如何从ISO-8601格式化的日期/时间字符串到time_t?我使用的是C++,它需要在Windows和Mac上运行.

我已经编写了代码,但我确信有一个更"标准"的版本.

我会得到一个类似的日期2011-03-21 20:25,我必须告诉时间是过去还是未来.

c++ time iso time-t

11
推荐指数
2
解决办法
1万
查看次数

将字符串时间转换为UNIX时间戳

我有一个字符串2013-05-29T21:19:48Z.我想将它转换为自1970年1月1日(UNIX纪元)以来的秒数,这样我就可以使用4个字节(或者5个字节,以避免2038年的问题)来保存它.我怎么能以便携的方式做到这一点?(我的代码必须在Linux和Windows上运行.)

我可以从字符串中获取日期部分,但我不知道如何计算秒数.我试着在C++中查看日期和时间实用程序文档,但我没有找到任何内容.

c++ unix-timestamp

7
推荐指数
2
解决办法
2万
查看次数

尝试使用std :: get_time来解析YYMMDD并失败

我试图这样做并失败:

std::istringstream ss("1212");
ss >> std::get_time(&t, "%y%m");
if (ss.fail()) // every time!
Run Code Online (Sandbox Code Playgroud)

这工作正常:

std::istringstream ss("12-12");
ss >> std::get_time(&t, "%y-%m");
Run Code Online (Sandbox Code Playgroud)

我有什么想法吗?我可以使用什么,否则,因为窗口似乎没有srtptime

windows/vs13 TIA

c++ std visual-c++

6
推荐指数
1
解决办法
810
查看次数

窗户上的strptime?

我写了这个非常好的应用程序,在Linux中运行良好.

它使用strptime().Windows没有这个.

有替代方案吗?

我的同事需要使用这个应用程序.

(我试过谷歌搜索已经无济于事)

c c++ linux windows visual-studio

5
推荐指数
1
解决办法
9042
查看次数

Win32:如何将字符串转换为日期?

在Windows中,我想将a解析stringdate使用精确格式字符串.

例如,给定字符串

"6/12/2010"
Run Code Online (Sandbox Code Playgroud)

和格式:

"M/d/yyyy"
Run Code Online (Sandbox Code Playgroud)

我想将字符串转换为日期,同时确保日期与格式匹配.

我还需要能够指定Y2K滑动窗口,枢轴.这意味着如果(正确)输入了2位数年份,我将指定将来考虑年份的年数.例如:

Two-digit Year    Pivot    Four-digit year
==============    =====    ===============
30                +0       1929
30                +18      1929
30                +19      1929
30                +20      2029
30                +21      2029
30                +100     2029
Run Code Online (Sandbox Code Playgroud)

.NET已经提供了一个DateTime.ParseExact函数,它几乎完全符合我的需求:

date = DateTime.ParseExact("6/12/2010", 
         DateTimeFormatInfo.ShortDatePattern,
         Thread.CurrentThread.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

除了我不能告诉它100年的支点价值.

更多例子:

String        Format Specifier        Date
"6/7/2029"   "M/d/yyyy"             6/7/2029
"6/7/29"     "M/d/yyyy"             (invalid, year too short)
"6/7/29"     "M/d/yy"               6/7/1929  (+0 pivot)
"6/7/29"     "M/d/yy"               6/7/2029  (+100 pivot
"6/7/29"     "M/d/yy"               6/7/2029  (+50 pivot)
"6/7/29"     "M/d/yy"               6/7/2029
"6/7/2029"   "M.d.yyyy" …
Run Code Online (Sandbox Code Playgroud)

windows datetime parsing datetime-format string-parsing

5
推荐指数
1
解决办法
2511
查看次数

Fortran中的日期时差

我的目标是让fortran返回两次作为字符串传递的差异,与VBA的TimeDiff非常相似.我现在已经在fortran处理日期和时间了很长一段时间,但在这个特殊情况下找不到我需要的东西.fortran中的第一个问题是如何将字符串转换为可进一步计算的时间变量.例如,time_and_dates ctime将时间转换为字符串,但在我的情况下需要的是完全相反的情况.

由于fortran可以很容易地计算出像程序完成所需时间的现场观察,甚至可以从系统本身中消除时间,所以如果我的想法到目前为止,它显然能够计算出这些东西.

但是如何将我的字符串"YYYYMMDD HHMMSS"传递给时间格式,如何用它来计算以及如何对输出进行短语?

这是一个应该导致的例子:

date1 = as.date("20130512 091519") !Stringinput
date2 = as.date("20131116 120418")


result = time.difference(date1,date2,outputunit="seconds")

print*, 'time diff in sec: ', result !returns something like 4646345 as Integer
Run Code Online (Sandbox Code Playgroud)

由于有能力在其他环境中进行此类计算(秒表等),我真的很感激不涉及任何外部扩展或冒险手动编码的解决方案(365 ...闰年... / 400 ......等等).

有没有办法使用fortran的实习生和系统(win64)为我的目的?

如果没有,通过哪种方式将系统的时间信息传递给fortran,这可能是模仿的(因此源不是"系统"而是"字符串")?

编辑:感谢您的输入到目前为止,但如上所述,我最好使用fortrans实习生能力(因为它在秒表中发生)为工作而不是扩展或手动计算.我发现很难相信日期和时间只能转换为角色而不是反过来...但是无论如何,谢谢你.

datetime fortran datediff

3
推荐指数
1
解决办法
4529
查看次数