`
ranyut
  • 浏览: 259839 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Javascript英文日期转成数字日期解决方案

阅读更多

前几天写的用javascript将英文日期如(10MAR11)转成数字日期2011-03-10

网上找了好久没找到,自己写了个,勉强够用,但肯定不是最好的,如果有高人能给个更好的解决方案不胜感激。

本方法支持两种年的转换,两位年转成4位年。

如出生日期则取0到100岁之间,证件有效期则取2000年以后的年(使用forwardDate=true)。

 

      /**
	* 英文日期字符串转化为数字日期 
	* dateStr:原英文日期 05MAR86 
	* forwardDate:年是否只取当前年以后的数(true|false)
	* Ranyut  2011-5-30
	**/
function pasreEnDate(dateStr, forwardDate) {
	try {
		if (dateStr && dateStr.trim().length != 7) {
			return;
		}
		var dd = dateStr.substring(0, 2);
		var mm = dateStr.substring(2, 5);
		var yy = dateStr.substring(5, 7);
		mm = mm.toUpperCase();
		var em = new Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");
		switch (mm) {
		  case em[0]:
			mm = 1;
			break;
		  case em[1]:
			mm = 2;
			break;
		  case em[2]:
			mm = 3;
			break;
		  case em[3]:
			mm = 4;
			break;
		  case em[4]:
			mm = 5;
			break;
		  case em[5]:
			mm = 6;
			break;
		  case em[6]:
			mm = 7;
			break;
		  case em[7]:
			mm = 8;
			break;
		  case em[8]:
			mm = 9;
			break;
		  case em[9]:
			mm = 10;
			break;
		  case em[10]:
			mm = 11;
			break;
		  case em[11]:
			mm = 12;
			break;
		}
		var now = new Date();
		var year = now.getFullYear();
		if (yy.length == 2) {
			//指定为10进制否则出问题
			yy = parseInt(yy,10); 
			if (forwardDate) { 
			    //只是当前日期以后的日期
				yy = 2000 + yy;
			} else {
				//如出生日期
				var miny = year - (2000 + yy);
				var maxy = year - (1900 + yy);
				if (miny > 0 || maxy < 100) {
					yy = 1900 + yy;
				} else {
					yy = 2000 + yy;
				}
			}
		}
		var nd = mm + "/" + dd + "/" + yy;
		var date2 = new Date(nd);
		return myGetDateText(date2);
	}
	catch (e) {
		return "";
	}
}

//将日期转化为2010-04-09格式的字符串
function myGetDateText(date1) {
	var dateStr = "";
	if (date1) {
		dateStr = date1.getFullYear();
		var month = date1.getMonth() + 1;
		var day = date1.getDate();
		if (month < 10) {
			dateStr += "-0" + month;
		} else {
			dateStr += "-" + month;
		}
		if (day < 10) {
			dateStr += "-0" + day;
		} else {
			dateStr += "-" + day;
		}
	}
	return dateStr;
}
/*******转化日期结束 ************/

 

注意parseInt()方法,parseInt("08"),parseInt("09")为转成0而不是8,9。

故用parseInt(string, radix); 

------------------------------------

对于 parseInt("07");之前 /parseInt("10") 到以后   都能得到正确的结果,但如果是parseInt("08") 或parseInt("09")则返回0; 

首先看parseInt语法:parseInt(string, radix); 

如果后面参数没写就以第一个的开头判断 

其中string为要转换的字符串,radix为二进制,八进制,十六进制或十进制。 

在默认不指定radix时,当以0x开关时,为十六进制; 

如果以0开头且第二个字符不为 "x",则认为是八进制,(因为八进制不能有8,9所以报错返回0)。 

如果以1开头就以十进制,所以10以后就又是对的了 

所以,在我们用时还是明确指定进位制,以防出错。 

如我们平时都用十进制位,我们就用 parseInt("08", 10); 

 

分享到:
评论
1 楼 waitdream 2011-06-17  
用什么switch?数组不是直接可以用下标么?

相关推荐

    基于JavaScript的数字时钟

    创建一个新的`Date`实例将返回当前日期和时间,然后可以通过`Date`对象的方法获取各种时间属性,例如小时、分钟和秒。例如: ```javascript var now = new Date(); var hours = now.getHours(); var minutes = now....

    javascript精确计算日期处理金额格式化

    在JavaScript开发中,日期处理和金额格式化是两个常见的需求,尤其在财务或者数据分析相关的应用中更为重要。JavaScript原生提供了Date对象来处理日期,但其功能相对有限,因此开发者通常会利用各种库来增强其功能,...

    JavaScript格式化日期

    `replace()`方法是JavaScript字符串的一个功能,用于查找并替换字符串中的特定部分,但在这里它无法直接解决日期格式化的复杂需求。 首先,让我们了解`Date`对象的基本用法。创建一个`Date`实例通常通过传递当前...

    后台日期类型转json字符串传到页面

    然而,当处理包含日期类型的Java对象时,直接转换成JSON可能会出现不符合预期的格式问题。 例如,`Student`类中的`birthday`字段是一个`Date`类型,当使用如`net.sf.json.JSONArray`这样的库将Java对象转换为JSON时...

    convertjs一个简单的JavaScript转换库

    描述中的"convert.js一个简单的JavaScript转换库"进一步确认了这是一个轻量级的解决方案,旨在为开发者提供易用且高效的转换功能。由于它被称为“简单”,我们可以推测它的API设计可能是直观的,易于理解和上手。 ...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    28、原生JavaScriptIP转成整型 29、原生JavaScript整型解析为IP地址 30、原生JavaScript实现checkbox全选与全不选 31、原生JavaScript判断是否移动设备 32、原生JavaScript判断是否移动设备访问 33、原生JavaScript...

    javaScript parseInt字符转化为数字函数使用小结.docx

    本文旨在深入探讨`parseInt()`函数的工作原理、使用方法以及一些常见陷阱,并提供解决方案。 #### 二、基本语法 `parseInt()`函数的基本语法如下: ```javascript parseInt(string, radix); ``` - **string**:...

    带时间的日期选择框(JS)

    在网页开发中,用户界面经常需要提供一种方式让用户选择日期和时间,这通常通过日期选择框...其核心特性包括日期和时间选择、事件处理、格式化输出等,为网页开发者提供了一种高效、灵活的日期时间选择解决方案。

    原生js实现的日期时间插件鼠标点击文本框弹出日期时间表格选择日期效果源码.zip

    该资源是一个基于原生JavaScript编写的日期时间...总的来说,这个原生JavaScript日期时间插件展示了JavaScript在网页交互中的强大功能,对于想要学习或使用轻量级日期选择解决方案的开发者来说,这是一个宝贵的资源。

    编程中通用解决日期时间组合问题

    本教程将详细探讨如何解决编程中的日期时间组合问题,帮助你构建一个通用的解决方案。 首先,我们需要理解日期和时间的基本概念。日期通常表示年、月、日,时间则包含小时、分钟和秒。在编程中,日期时间通常被表示...

    JavaScript_用于数字日志的桌面应用程序.zip

    在JavaScript中,处理数字日志可能涉及到数据结构(如数组或对象)来存储日志条目,以及日期和时间的处理,可能使用了JavaScript的内置Date对象。为了提供搜索功能,可能还使用了字符串匹配算法或正则表达式。此外,...

    检测表单中日期的合法性,检测项目很全(HTML经典用例)

    综上所述,这个示例提供了完整的日期合法性检测解决方案,包括实时输入过滤、格式化和有效性验证,可以有效地应用于网页表单中,确保用户输入的日期准确无误。开发者可以根据实际需求调整或扩展这些函数,以适应更...

    json_decode 索引为数字时自动排序问题解决方法.docx

    ### JSON Decode 索引为数字时自动排序问题解析及解决方案 #### 一、问题背景与现象 在处理Web开发中的前后端数据交互时,JSON(JavaScript Object Notation)格式因其简洁、易读且易于解析的特点被广泛采用。但在...

    JavaScript Cheat Sheet.pdf

    JavaScript日期对象 1. 日期对象是一种复杂的数据类型,用于存储日期和时间信息。 2. 日期对象可以用于执行日期和时间的计算和比较。 JavaScript浏览器对象 1. 浏览器对象是指浏览器提供的对象,如window、...

    Javascript/Vue/React/ReactNative的国际化解决方案

    它由`formatjs.io`团队维护,与`Intl` API兼容,提供了一套完整的解决方案,包括文本、数字、日期和时间的格式化,以及动态加载语言包等功能。在React应用中,可以使用`&lt;FormattedMessage&gt;`和`&lt;FormattedNumber&gt;`等...

    Javascript 用到的技术收集 (不断更新)

    6. **模块化**:ES6引入了`import`和`export`语法进行模块管理,CommonJS和AMD(如require.js)是早期的模块化解决方案。 7. **DOM操作**:JavaScript可以直接操作文档对象模型(DOM),通过`document....

    JavaScript常用对象.md

    ### JavaScript 常用对象详解 #### 对象概念与特性 在 JavaScript 中,对象是一种非常重要的数据类型。...通过了解这些内置对象的基本特性和用法,开发者可以更加高效地编写 JavaScript 代码,并解决各种编程问题。

    CompactCreditInput,一个紧凑的信用卡输入字段,它将数字日期和CVV组合成一个字段.zip

    CompactCreditInput,正如其名,是一款旨在简化信用卡输入过程的开源项目,它将传统的数字日期和CVV(Card Verification Value)字段整合到一个单一的输入字段中,从而提升用户界面的简洁性和易用性。 1. **项目...

    JavaScript实现表格排序

    这篇我们将深入探讨如何使用JavaScript实现表格排序,包括对数字、日期和汉字的排序。 首先,我们需要理解HTML表格的基本结构,通常由`&lt;table&gt;`、`&lt;tr&gt;`(行)、`&lt;th&gt;`(表头)和`&lt;td&gt;`(数据单元格)组成。为了...

    datetimepicker 日期NaN错误 中文乱码(附修正版)

    在JavaScript环境下,`NaN`代表"非数字",当日期格式不正确或者无法解析为日期对象时,JavaScript会返回`NaN`。中文乱码则可能是因为字符编码设置不正确,导致在显示或处理文本时出现错误。 首先,我们来详细分析这...

Global site tag (gtag.js) - Google Analytics