2011-02-16 88 views
1

我有40241作爲一個日期值。這是哪種格式?日期時間轉換

我認爲這是在過去的午夜秒。 但我需要一個公式,這樣我可以手動制定和驗證!

感謝

+0

爲什麼你知道這是約會? _date_在一天之內不是幾秒鐘,它具有更廣泛的意義。 – 2011-02-16 22:25:43

+0

我已經在dat列中給出了輸入。認爲它是理所當然的。 – abbas 2011-02-16 22:26:59

+0

請提供更多信息。什麼語言,你從哪裏獲得這個價值? – 2011-02-16 22:27:23

回答

2

如果是 「秒午夜」,你可以簡單地這樣做:

  • 除以3600(秒在一個小時內);你得到的小時數;
  • 採取該除法的餘數,併除以60它;你得到分鐘;
  • 其餘是秒。

實施例:

40241/3600=11 (641) 
641/60=10 (41) 

因此,它是11時10分41秒。

順便說一句,我想這是一個時間值;如果它是一個datetime值,很可能會更大(如UNIX時間戳),或者將有一個小數部分(例如,IIRC,OLE日期)。


事實證明,這是一個Excel日期;然後,看看this KB article,這一切都詳細解釋;但如果你只是想正確顯示它,繼續單元格的屬性(Ctrl + )並將其數據類型設置爲「日期」或「日期/時間」(或不管它是什麼,目前手頭有Excel)。

3

如果它是一個Excel郵戳,那麼它是天的自1899年12月31日(以處理數量與1900閏年);它把它作爲2010年3月4日...除非Excel被配置爲使用Mac 1904日曆,在這種情況下它是自1904年1月1日以來的天數。

如何轉換它取決於您首選的腳本語言;或者是否可以簡單地使用Excel本身,而只是設定該小區的格式掩碼的日期格式之一

0

Excel保存日期爲自1月1日的天數爲整數,1900

注意:在Excel中有一個錯誤,所以你做了轉換並減去一個。如果在時間之後看到小數點。

下面是一些Java代碼轉換,如果你想驗證:

public static Date ExcelDateParse(int ExcelDate){ 
    Date result = null; 
    try{ 
     GregorianCalendar gc = new GregorianCalendar(1900, Calendar.JANUARY, 1); 
     gc.add(Calendar.DATE, ExcelDate - 1); 
     result = gc.getTime(); 
    } catch(RuntimeException e1) {} 
    return result; 
}  
0

我凝結的日期apache的解決方案,而時間(https://svn.apache.org/repos/asf/poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java

public static Date parseExcelDate(double date) { 
     int wholeDays = (int) Math.floor(date); 
     Calendar calendar = new GregorianCalendar(); 
     int startYear = 1900; 
     int dayAdjust = wholeDays < 61 ? 0 : -1; 
     calendar.set(startYear, 0, wholeDays + dayAdjust, 0, 0, 0); 
     return calendar.getTime(); 
    } 

其他線程:Program in Java to convert a date to serial number as done in Excel