Package loci.poi.hssf.usermodel
Class HSSFDateUtil
- java.lang.Object
-
- loci.poi.hssf.usermodel.HSSFDateUtil
-
public class HSSFDateUtil extends Object
Contains methods for dealing with Excel dates.- Author:
- Michael Harhen, Glen Stampoultzis (glens at apache.org), Dan Sherman (dsherman at isisph.com), Hack Kampbjorn (hak at 2mba.dk)
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static double
getExcelDate(Date date)
Given a Date, converts it into a double representing its internal Excel representation, which is the number of days since 1/1/1900.static Date
getJavaDate(double date)
Given a excel date, converts it into a Date.static Date
getJavaDate(double date, boolean use1904windowing)
Given an Excel date with either 1900 or 1904 date windowing, converts it to a java.util.Date.static boolean
isADateFormat(int formatIndex, String formatString)
Given a format ID and its format String, will check to see if the format represents a date format or not.static boolean
isCellDateFormatted(HSSFCell cell)
Check if a cell contains a date Since dates are stored internally in Excel as double values we infer it is a date if it is formatted as such.static boolean
isCellInternalDateFormatted(HSSFCell cell)
Check if a cell contains a date, checking only for internal excel date formats.static boolean
isInternalDateFormat(int format)
Given a format ID this will check whether the format represents an internal excel date format or not.static boolean
isValidExcelDate(double value)
Given a double, checks if it is a valid Excel date.
-
-
-
Method Detail
-
getExcelDate
public static double getExcelDate(Date date)
Given a Date, converts it into a double representing its internal Excel representation, which is the number of days since 1/1/1900. Fractional days represent hours, minutes, and seconds.- Parameters:
date
- the Date- Returns:
- Excel representation of Date (-1 if error - test for error by checking for less than 0.1)
-
getJavaDate
public static Date getJavaDate(double date)
Given a excel date, converts it into a Date. Assumes 1900 date windowing.- Parameters:
date
- the Excel Date- Returns:
- Java representation of a date (null if error)
- See Also:
getJavaDate(double,boolean)
-
getJavaDate
public static Date getJavaDate(double date, boolean use1904windowing)
Given an Excel date with either 1900 or 1904 date windowing, converts it to a java.util.Date. NOTE: If the defaultTimeZone
in Java uses Daylight Saving Time then the conversion back to an Excel date may not give the same value, that is the comparisonexcelDate == getExcelDate(getJavaDate(excelDate,false))
is not always true. For example if default timezone isEurope/Copenhagen
, on 2004-03-28 the minute after 01:59 CET is 03:00 CEST, if the excel date represents a time between 02:00 and 03:00 then it is converted to past 03:00 summer time- Parameters:
date
- The Excel date.use1904windowing
- true if date uses 1904 windowing, or false if using 1900 date windowing.- Returns:
- Java representation of the date, or null if date is not a valid Excel date
- See Also:
TimeZone
-
isADateFormat
public static boolean isADateFormat(int formatIndex, String formatString)
Given a format ID and its format String, will check to see if the format represents a date format or not. Firstly, it will check to see if the format ID corresponds to an internal excel date format (eg most US date formats) If not, it will check to see if the format string only contains date formatting characters (ymd-/), which covers most non US date formats.- Parameters:
formatIndex
- The index of the format, eg from ExtendedFormatRecord.getFormatIndexformatString
- The format string, eg from FormatRecord.getFormatString- See Also:
isInternalDateFormat(int)
-
isInternalDateFormat
public static boolean isInternalDateFormat(int format)
Given a format ID this will check whether the format represents an internal excel date format or not.- See Also:
isADateFormat(int, java.lang.String)
-
isCellDateFormatted
public static boolean isCellDateFormatted(HSSFCell cell)
Check if a cell contains a date Since dates are stored internally in Excel as double values we infer it is a date if it is formatted as such.
-
isCellInternalDateFormatted
public static boolean isCellInternalDateFormatted(HSSFCell cell)
Check if a cell contains a date, checking only for internal excel date formats. As Excel stores a great many of its dates in "non-internal" date formats, you will not normally want to use this method.
-
isValidExcelDate
public static boolean isValidExcelDate(double value)
Given a double, checks if it is a valid Excel date.- Parameters:
value
- the double value- Returns:
- true if valid
-
-