シナリオは次のとおりです:私はlibexifで "YYYY-MM-DD HH:MM:SS"の形式でdatetimeを取得します。節約コストを最小限に抑えるために、datetimeをUNIXのタイムスタンプまたは64ビットまたは32ビットのコストに変換する必要があります。 cとの明示的な方法はありますか?cでdatetimeをunixタイムスタンプに変換するには?
mktime
17
A
答えて
30
5
を用いtime_t
にそれを変換し、その後、struct tm
を移入するために整数に日付/時刻の各部分を変換します。
1
の組み合わせを試すことができ、私はちょうど一緒にハッキングC /擬似コードでは、有線ソリューションです。がんばろう!
char * runner = NULL;
char *string_orig = "YYYY-MM-DD HH:MM:SS";
time_t time = 0;
struct tm tmp;
use strstr(string_orig, "-") and atoi foreach
tmp->tm_year ..
tmp->tm_mon ..
tmp->tm_mday ..
tmp->tm_hour ..
tmp->tm_min ..
tmp->tm_sec ..
with *runner as help
time = mktime(&tm)
1
sscanfはどうですか? strptimeが利用できないとき
struct tm tmVar;
char *strVar = "YYYY-MM-DD HH:MM:SS";
time_t timeVar;
if(sscanf(strVar, "%d-%d-%d %d:%d:%d", &tm.tm_year, /* the other fields */)==6)
timeVar = mktime(&tmVar);
else
// bad format
0
はここで準備ができ抜粋です:
#include <stddef.h>
#include <time.h>
#include <stdio.h>
time_t string_to_seconds(const char *timestamp_str)
{
struct tm tm;
time_t seconds;
int r;
if (timestamp_str == NULL) {
printf("null argument\n");
return (time_t)-1;
}
r = sscanf(timestamp_str, "%d-%d-%d %d:%d:%d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
if (r != 6) {
printf("expected %d numbers scanned in %s\n", r, timestamp_str);
return (time_t)-1;
}
tm.tm_year -= 1900;
tm.tm_mon -= 1;
tm.tm_isdst = 0;
seconds = mktime(&tm);
if (seconds == (time_t)-1) {
printf("reading time from %s failed\n", timestamp_str);
}
return seconds;
}
は何が必要にyouselfにsscanf関数に文字列を調整します。タイムゾーンを無視し、GMT/UTCはtimezone
(または_timezone
)seconds
から(time.hにDSTに定義されているグローバルtimezone
がすでにtm
のtm_isdst
フィールドをゼロにすることにより無視されるsubstractとして常に変換するには。
関連する問題
- 1. DatetimeをUnixタイムスタンプに変換する
- 2. djangoのテンプルテでunixタイムスタンプをdatetimeに変換するには?
- 3. 複数のUnixタイムスタンプをPandas Datetimeに変換するには?
- 4. C#Unixタイムスタンプto DateTime
- 5. タイムスタンプ(データベース)をDateTime(C#)に変換する
- 6. unixタイムスタンプをH2タイムスタンプに変換する
- 7. SAS datetimeをSASのUNIXタイムスタンプに変換する
- 8. Unixタイムスタンプ(ミリ秒単位)の行をdatetimeに変換する
- 9. C#:UnixのタイムスタンプとDateTime
- 10. DateTimeとunixタイムスタンプの間で変換する有効なC#の方法
- 11. タイムスタンプをPHPのUNIXタイムスタンプに変換するには?
- 12. UTCをUnixタイムスタンプに変換する
- 13. Joda LocalDateTimeをUnixタイムスタンプに変換する
- 14. epoch/unixをDatetimeに変換する
- 15. DataFactoryアクティビティでDateTimeをUnixのタイムスタンプに変更する
- 16. UNIXへのタイムスタンプDATETIME
- 17. C++でunixのタイムスタンプを曜日に変換しますか?
- 18. DateTime unixタイムスタンプを比較
- 19. Unixのタイムスタンプをタイムゾーンなしのタイムスタンプに変換する
- 20. datetimeオブジェクトをミリ秒のunixタイムスタンプに変換するために推奨される方法は何ですか?
- 21. UNIXのタイムスタンプをhhmmssに変換するには?
- 22. UNIXのタイムスタンプをNSDataオブジェクトに変換するには?
- 23. jsonで送信する前にunixタイムスタンプを変換する
- 24. タイムスタンプ文字列をdatetimeオブジェクトに変換するには?
- 25. タイムスタンプをElixirのDateTimeに変換するには?
- 26. 文字列をjavascriptのUnixタイムスタンプに変換する方法は?
- 27. F#のUnix TimeStampにDateTimeを変換する方法は?
- 28. codeigniterでユーザのローカルタイムをgmt unixのタイムスタンプに変換する
- 29. jQuery/javascriptでフルタイム文字列をUnixタイムスタンプに変換する
- 30. UNIXタイムスタンプ(ミリ秒)からPythonでHH:MM:SSに変換する
を私はそこに知っていなければなりませんでした –
+1:私はstrptimeを考えていましたが、私はそれの関数名を思い出すことができませんでした。 。 – Powerlord
Windowsを使用している場合、この質問を参照してください:http://stackoverflow.com/questions/321849/strptime-equivalent-on-windows – Powerlord