配合,
我有一个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);
但输出与输入相同。
答案 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 ) ;