从java中的excel读取的值的日期转换

时间:2017-09-19 11:47:40

标签: java jsp

配合,

我有一个Date对象,从excel

读取后会填充一个值
Date mydate = cell.getDateCellValue(); 

载入的值是 *“Sat Jan 09 00:00:00 IST 2016”

我不知道为什么这个格式值是从excel发出的,虽然它在excel中以不同的格式显示。

我想将此DATE转换为dd-mm-yyyy格式。怎么办呢?

试过这个

String ms= "Sat Jan 09 00:00:00 IST 2016"   ;  
          SimpleDateFormat formater = new SimpleDateFormat("mm-dd-yy");      
          Date result = formater.parse(ms);
          System.out.println(result); 

但输出与输入相同。

2 个答案:

答案 0 :(得分:0)

您需要创建自己的Date类并覆盖toString方法,您希望它返回格式#ApachePOI

public class CustomDate extends Date
{

public CustomDate(String string) 
{
    super(string);
}

@Override
public String toString()
{
    SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
    String format = formatter.format(this);

    return format;
}
}

主要方法

public static void main(String[] args) 
{
    Date date = new Date("Sat Dec 01 00:00:00 GMT 2012");
    String dateString  = date.toString();

    CustomDate customDate = new CustomDate(dateString);

    System.out.println(dateString);
    System.out.println(customDate.toString());
}

在toString方法中使用您想要的任何格式

答案 1 :(得分:0)

不要将日期时间对象与表示其值的文本混淆。 java.util.Date没有“格式”。您正在看到该对象的toString方法生成的文字。该文本在对象内部不存在。该类“toString所在,将JVM当前的默认时区应用于实际存储在其中的UTC值。完全避免这一课程的众多原因之一。

那个Date类是现在遗留下来的麻烦的旧日期时间类的一部分,取而代之的是java.time类。

java.util.Date对象转换为Instant

在Java 8及更高版本中,查找添加到旧类的新转换方法。对于Java 6& Java 7,您将使用ThreeTen-Backport项目。在那里,您将找到提供转换方法的DateTimeUtil类。

Instant我们可以获得约会。但首先我们必须应用时区将Instant从UTC移动到您想要感知日期的区域。对于任何给定的时刻,日期在全球范围内因地区而异。

ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;

使用DateTimeFormatter生成字符串。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd -MM-uuuu" , Locale.US ) ;
String output = zdt.format( f ) ;