3

私はこの形式で時間のある日付をたくさん持っています:

day.mon.year - hour:min:sec

そして、この日付と時刻を Unix タイムスタンプに変換する必要があります。

tm構造を使用しましたが、これらのフィールドに入力できません。

tm_wday
tm_yday

このフィールドが Unix タイムスタンプの値に影響を与えるかどうかわからないので、これらのフィールドに入力する必要はありません。

Unix タイムスタンプを計算する正しい方法を選択するのを手伝ってください。

PS 時刻付きの日付は現在のものではありません。20 世紀の日付または将来の日付 (2038 年まで) の可能性があります。

PPS 私は OS Windows を使用しています。

4

2 に答える 2

7

POSIXには、まさにあなたが望むもののための式があります:

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15

tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400 +
    (tm_year-70)*31536000 + ((tm_year-69)/4)*86400 -
    ((tm_year-1)/100)*86400 + ((tm_year+299)/400)*86400

mktimeこれは、基になるシステムのなどの機能がtime_t「Unix タイムスタンプ」と同じ形式を使用していなくても、GMT に時間の内訳がある場合はいつでも機能します。

元の時間が現地時間の場合は、mktimegmtimeを使用して、システムのタイムゾーン規則の概念を使用して GMT に変換できます。独自のタイムゾーン オフセット ルールを適用する場合は、上記の式を使用する前に手動で行ってください。

于 2013-07-12T15:44:10.157 に答える