2017-10-11 121 views
-1

我有一個YYYY-MM-DD的字符串:HH:mm:SS:sss(例如:2017-10-11:04:36:26.376)。現在我想將它轉換爲紀元時間。這是什麼程序化的方法?我在C++中編程,能夠提取變量中的信息。如何將字符串轉換爲YYYY-MM-DD:HH:mm:SS:sss轉換爲紀元時間?

+0

這幾乎可以肯定是作爲算法實現的,而不是公式。任何公式都需要很長才能涵蓋所有的情況,並且需要有很多條件。你想如何實現條件 - 作爲分段定義的函數?他們會深深嵌套,整個事情會看起來很亂。爲什麼你需要一個公式而不是代碼?最後,你有什麼嘗試? –

+0

不是一個Linux的傢伙,但是通過時代,你的意思與TAG或天文時代的定義相同,因爲它們並不相同。有每年的日子和冬/夏時間轉換日期的公式,但你需要從一些已知的時間迭代,直到你達到所需的時間...你可以加快通過大步驟浸透...然後越來越小,直到打擊日間障礙。 – Spektre

+0

@Spektre在Unix領域,時代是'1970-01-01 00:00:00 UTC'' – barrycarter

回答

0

正如其他人所說的公式是如此複雜,並會使整個代碼亂七八糟,所以要避免這些,我是計算從輸入日期到01-01-2000的天數。因爲我知道到01-01-2000爲止的時間,因此通過查找考慮閏年的天數,我可以計算總時間。

0

原來有一個公式,但它相當醜陋。我本來在實施基本在1982年2.0類似(當每個字節計算),後來它轉換成Perl:

sub datestar { 
$_=shift; 
/^(....)(..)(..)/; 
$fy=($1-($2<3)); 
$jd=$fy*365+int($fy/4)-int($fy/100)+int($fy/400)+int(((($2-3+12*($2<3))*30.6)+.5)+$3); 
return(86400*($jd-719469)) 
} 

請注意,這需要類似「20171011」,而不是「二〇一七年十月十一日」並且不會轉換小時/分鐘/秒(這很容易轉換)。

與往常一樣,請在使用前仔細檢查代碼,並將其作爲模板編寫自己的代碼(如果您真的想要的話)。

但是,使用編程語言的現有功能來完成此操作會更好。

相關問題