Date的那些事

之前在公司开发一个时间控件。老手告诉我Date这个东西难搞啊,要考虑很多本身的逻辑合理性,又要考虑不同浏览器的兼容性。

当时就翻api猛查,发现了很多有意思的东西。

  原来获取年数应该是getFullYear,不是getYear。

  月份是从0开始的,呵呵,getMonth的时候需要 ++。

  

看完api原来很多方法可以在Date对象里封装了,不用自己写代码和复杂的逻辑判断了。如获取前一天可以这样

  var d = new Date();
  d.setDate(d.getDate() + 1)

 

这样就可以直接用封装好的Date对象,而不用考虑闰年,大小月的逻辑判断了。

虽然这里很方便,而api里的标准方法写的很详细。可是不同的浏览器实现起来还真是诡异,有些完全不按照标准去实现Date的。

先看下面这些代码

   var dateStr1 = "2011-02-02";
    var dateStr2 = "2011-2-2";
    var dateStr3 = "2011/02/02";

    console.log(new Date(dateStr1));
    console.log(new Date(dateStr2));
    console.log(new Date(dateStr3));

 

在 chrome上支持的很好,其输出结果为。三种日期格式串都可以

Wed Feb 02 2011 00:00:00 GMT+0800 (China Standard Time)
date.html:17Wed Feb 02 2011 00:00:00 GMT+0800 (China Standard Time)
date.html:18Wed Feb 02 2011 00:00:00 GMT+0800 (China Standard Time)

 

在ff日期格式要求就相对严格了很多。对数据的要求很高 必须 YYYY-MM-DD 4位-2位-2位才可以

  Date {Wed Feb 02 2011 08:00:00 GMT+0800}
  Date {Invalid Date}
  Date {Wed Feb 02 2011 00:00:00 GMT+0800}

 

在ie8上就更是诡异。支持"2011/01/01"或者"2011/1/1" ,不支持"2011-01-01"

 日志: NaN
 日志: NaN
 日志: Wed Feb 2 00:00:00 UTC+0800 2011

 

不过这些还不是令人费解的地方。ie8在调试断点状态和非调试断点状态又是不同。这可样郁闷。

 

现在也只是试了3个浏览器。其他浏览器还没有试过。又或者某个版本的状况又不同。要做这个的兼容可不是件容易的事。因为总有些你不知道的事冒出来。

 

于是我换了种实现方式。获取一个时间有3种方法。

dateObj = new Date()
dateObj = new Date(dateVal)
dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])

那么我们来用第三种方法。从第三种方法的参数来说,都是number,于是猜测这样的兼容性应该会好点,因为大家要调用的接口是一样的。

如果还是通过传一个日期的字符串过来,那么就得把字符串转成有效的参数调用第三个方法。

大致思路如下:

function StringToDate(DateStr) {
	var converted = Date.parse(DateStr);
	var myDate = new Date(converted);
	if (isNaN(myDate)) {
		var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';
		var arys = DateStr.split(delimCahar);
		myDate = new Date(arys[0], --arys[1], arys[2]);
	}
	return myDate;
}

这样我们就创建了一个某个时间的Date的对象了。大功告成。在不同浏览器上测试是通过的。

 

 

 

 

转载于:https://www.cnblogs.com/liyatang/archive/2011/09/09/2172019.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值