nutzmore icon indicating copy to clipboard operation
nutzmore copied to clipboard

json4excel 时间格式转换问题

Open Rekoe opened this issue 6 years ago • 4 comments

@pangwu86 Flash_Sale.xlsx 文件里面的 开始时间 和结束时间 两列配置的整点时间 转换后出现了2018-05-09 09:59:59 但里面配置的都是整点的数据

@J4EName("flash_sale")
public class FlashSale {

	@J4EName("开始时间")
	private String from;

	@J4EName("结束时间")
	private String to;

	@J4EName("商品ID")
	private long itemId;

	@J4EName("skuID")
	private long skuId;

	@J4EName("闪购价")
	@J4EDefine(precision = 2)
	private float price;

	public String getFrom() {
		return from;
	}

	public void setFrom(String from) {
		this.from = from;
	}

	public String getTo() {
		return to;
	}

	public void setTo(String to) {
		this.to = to;
	}

	public long getItemId() {
		return itemId;
	}

	public void setItemId(long itemId) {
		this.itemId = itemId;
	}

	public long getSkuId() {
		return skuId;
	}

	public void setSkuId(long skuId) {
		this.skuId = skuId;
	}

	public float getPrice() {
		return price;
	}

	public void setPrice(float price) {
		this.price = price;
	}

}

code

File outFile = Files.createFileIfNoExists2(Disks.normalize("Flash_Sale.xlsx"));
		List<FlashSale> list = J4E.fromExcel(Streams.fileIn(outFile), FlashSale.class, null);
		for (FlashSale flashSale : list) {
			String fromStr = flashSale.getFrom();
			Date from = SaudiTime(fromStr);
			String toStr = flashSale.getTo();
			System.out.println(fromStr + " ," + toStr );
                }
}

Rekoe avatar May 09 '18 01:05 Rekoe

嗯,下午me查查

pangwu86 avatar May 09 '18 05:05 pangwu86

@pangwu86 搞出来了没 ?

Rekoe avatar May 09 '18 09:05 Rekoe

excel里实际存储的是日期类型 ,poi接口拿到的就是你最终看到的有整点有59的,看了下poi的实现,里面实际存储的是个double类型 然后转成日期,但为什么字面上一样的日期读取来的double不一样 这个还在查

pangwu86 avatar May 09 '18 10:05 pangwu86

@Rekoe 目前看这个应该是POI的bug,excel存储时那个字段设置成日期类型 在poi里就只能以double类型读取到 poi读出来的就是差1s也是无法让人理解

me推荐你如果这个读取的excel是你能控制的,那就是保存日期时用字符串类型

pangwu86 avatar May 09 '18 10:05 pangwu86