2014-09-24 75 views
0

在我的應用程序中,我從Excel表中讀取一些數據,並在當我想從單元格獲取時間戳的時候扣動。在這個特定的單元格中,我得到了一個值'1900-01-02 13:20:04',在Excel中,我使用的格式爲'[h]:mm:ss',它將此值格式化爲'61:20:04',它是正確的,因爲那些單元顯示一些員工工作幾個小時。 我想要實現的是從Excel中讀取這些數據,格式與Excel中格式化('61:20:04')相同,並將其保存爲字符串。我的問題是如何閱讀這個,或轉換爲這個時間戳值?將excel格式轉換爲C#TimeStamp就像excel那樣做

EDIT(的方式我這樣做了)

我讀使用ODBC所以才選擇數據我需要(如SQL SELECT)從Excel的代碼 - >所有數據添加到數據表,然後我」我只是在做

dr [「workinghours」] .toString() - (dr = DataRow在我的DataTable.Rows中)這一行返回'1900-01-02 13:20:04'。我如何將它轉換爲像excel那樣的時間。

+0

怎麼樣告訴我們你是如何做數據閱讀到現在?例如。顯示一些代碼。 – C4u 2014-09-24 09:31:47

+1

我編輯了這個問題。 – MajkeloDev 2014-09-24 09:38:21

回答

1

構思的一些證明:

var timeStamp = "1900-01-02 13:20:04"; 
var date = DateTime.Parse(timeStamp); 
var stamp = date.Subtract(new DateTime(1900, 1, 1)); 
var result = string.Format("{0}:{1:00}:{2:00}", 24 + stamp.Days * 24 + stamp.Hours, stamp.Minutes, stamp.Seconds); 

似乎出於某種原因Excel的需要時間戳從1900年一月0,這就是爲什麼我在小時結果加24。

我認爲你總是希望格式hh:mm:ss,即使是天,月等。

+0

Yupp,這個代碼有效。它與C4ud3x的方法非常相似,但沒有這個小錯誤。標記爲答案,因爲這個更完整。謝謝你們兩位(我想將這兩個標記爲答案) – MajkeloDev 2014-09-24 09:56:34

+0

Nah。這是使用dateTime轉換方法更準確的一個。給予贊成。 – C4u 2014-09-24 09:58:27

+0

你說得對。你的(C4ud3x)代碼'沒有減號'工作正常,但我不得不使用string.format格式化它。 此代碼無格式。很棒的工作 - 非常感謝你:) – MajkeloDev 2014-09-24 10:13:41

0

沒有提供任何代碼我不想從'如何正確讀取數據'並指向'如何轉換輸出'。

能像這樣工作:

string[] stampParts = output.ToString().Split(' '); 
string[] dateParts = stampParts[0].Split('-'); 
string[] timeParts = stampParts[1].Split(':'); 

var result = new TimeSpan(((Convert.ToInt32(dateParts[2])-1)*24) + Convert.ToInt32(timeParts[0]), Convert.ToInt32(timeParts[1]), Convert.ToInt32(timeParts[2])); 

這從24小時日期由單一一到你的時間小時增加的天數。
注意:我沒有計算這裏的月份。所以這個代碼在一個月內計算有限。如果你想輸出更大的數字(超過約720小時),這些月份必須包含在計算中。代碼之後

編輯是提供:
對不起,我h​​avnt使用ODBC的連接工作過。但重點是:你得到的是原始價值,而不是計算的價值。我已經嘗試了谷歌搜索,但無法找到很多結果。

也許別人可以幫忙。相反,我會建議只是轉換輸出。

+0

我沒有提供代碼,因爲我想要一個像你的代碼一樣正確的方法。一些抽象代碼不需要特別說明。 我試了一下你的代碼,但它給了我1.13:20:04。有一天= 24H,這一天和時間的總和給了我大約37H。在Excel中,我看到64小時。我不知道Excel如何計算它。 – MajkeloDev 2014-09-24 09:47:58

+0

正如我所說:也許有一種方法可以從Excel文檔中獲取計算值。到目前爲止,我還沒有找到有用的東西。我可以提供的幫助已經發布。 //我看到你的編輯。讓我檢查自己的代碼。給我幾分鐘。 – C4u 2014-09-24 09:50:13

+0

無論如何感謝您的幫助:) – MajkeloDev 2014-09-24 09:50:52