`
steven-zhou
  • 浏览: 212315 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

日期处理通用函数

阅读更多
var DateUtils_MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
/** 时间处理公共函数 */
function DateUtils() {}

DateUtils.prototype.toDate = function(strDate) {
	if (strDate.length == 19) {	// YYYY-MM-DD HH:MI:SS
		var year  = strDate.substring(0, 4);
		var month = strDate.substring(5, 7);
		var date  = strDate.substring(8, 10);
		var hour  = strDate.substring(11, 13);
		var min   = strDate.substring(14, 16);
		var sec   = strDate.substring(17, 19);
		return new Date(year, month - 1, date, hour, min, sec);
	} else if (strDate.length == 10) { // "YYYY-MM-DD"
		var year  = strDate.substring(0, 4);
		var month = strDate.substring(5, 7);
		var date  = strDate.substring(8, 10);
		return new Date(year, month - 1, date);
	} else if (strDate.length == 7) { // "YYYY-MM"
		var year  = strDate.substring(0, 4);
		var month = strDate.substring(5, 7);
		return new Date(year, month - 1);
	} else if (strDate.length == 4) { // "YYYY"
		var year  = strDate.substring(0, 4);
		return new Date(year);		
	} else {
		alert("DateUtils.toDate(strDate) error! invalid argument(format).");
	}
}

DateUtils.prototype.toString = function(date, format) {
	var strDate;
	var year  = date.getFullYear();
	var month = date.getMonth() + 1;
	var day   = date.getDate();
	var hour  = date.getHours();
	var min   = date.getMinutes();
	var sec   = date.getSeconds();
	month = (parseInt(month) < 10) ? ("0" + month) : (month);
	day   = (parseInt(day)   < 10) ? ("0" + day )  : (day);
	hour  = (parseInt(hour)  < 10) ? ("0" + hour)  : (hour);
	min   = (parseInt(min)   < 10) ? ("0" + min)   : (min);
	sec   = (parseInt(sec)   < 10) ? ("0" + sec)   : (sec);
	if ("YYYY-MM-DD HH:MI:SS" == format) {
		strDate = year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec;
	} else if ("YYYY-MM-DD" == format) {
		strDate = year + "-" + month + "-" + day;
	} else if ("YYYY-MM" == format) {
		strDate = year + "-" + month;	
	} else if ("YYYY" == format) {
		strDate = year;		
	} else {
		alert("DateUtils.toString(date, format) error! invalid argument(format).");
	}
	return strDate;
}

DateUtils.prototype.getMonthDays = function(date,month) {
	var year = date.getFullYear();
	if (typeof month == "undefined") {
		month = date.getMonth();
	}
	if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
		return 29;
	} else {
		return DateUtils_MD[month];
	}
};
	
DateUtils.prototype.addDays = function(dayOffset, strBaseDate) {
	var date = (arguments.length == 1) ? this.toDate(this.today()) : this.toDate(strBaseDate);
	date = new Date(date.getTime() + parseInt(dayOffset) * 24 * 3600 * 1000);
	return this.toString(new Date(date), "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.addMonths = function(monthOffset, strBaseDate) {
	var date = (arguments.length == 1) ? this.toDate(this.today()): this.toDate(strBaseDate);
	var month=date.getMonth();
	var cd=date.getDate();//this.getMonthDays(date,month);
	var td=this.getMonthDays(date,date.getMonth() + parseInt(monthOffset));
	if(cd > td){date.setDate(td);}
	date.setMonth(date.getMonth() + parseInt(monthOffset));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.addMonthsForStart = function(monthOffset, strBaseDate) {
	var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
	strDate = this.addMonths(monthOffset, strDate);
	return this.firstDayOfMonth(strDate);
}

DateUtils.prototype.addMonthsForEnd = function(monthOffset, strBaseDate) {
	var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
	strDate = this.addMonths(monthOffset, strDate);
	return this.addDays(-1, this.firstDayOfMonth(strDate));
}

DateUtils.prototype.addYears = function(yearOffset, strBaseDate) {
	var date = (arguments.length == 1) ? this.toDate(this.today()) : this.toDate(strBaseDate);
	date.setYear(date.getYear() + parseInt(yearOffset));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.addYearsForStart = function(yearOffset, strBaseDate) {
	var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
	strDate = this.addYears(yearOffset, strDate);
	return this.firstDayOfYear(strDate);
}

DateUtils.prototype.addYearsForEnd = function(yearOffset, strBaseDate) {
	var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
	strDate = this.addYears(yearOffset, strDate);
	return this.firstDayOfYear(strDate);
}

DateUtils.prototype.sunOfWeek = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date = new Date(date - (date.getDay()) * (24 * 3600 * 1000));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");	
}

DateUtils.prototype.monOfWeek = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date = new Date(date - (date.getDay() - 1) * (24 * 3600 * 1000));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.tueOfWeek = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date = new Date(date - (date.getDay() - 2) * (24 * 3600 * 1000));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.wedOfWeek = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date = new Date(date - (date.getDay() - 3) * (24 * 3600 * 1000));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.turOfWeek = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date = new Date(date - (date.getDay() - 4) * (24 * 3600 * 1000));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.friOfWeek = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date = new Date(date - (date.getDay() - 5) * (24 * 3600 * 1000));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.satOfWeek = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date = new Date(date - (date.getDay() - 6) * (24 * 3600 * 1000));
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.firstDayOfMonth = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date.setDate(1);
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.lastDayOfMonth = function(strDate) {
	strDate = (arguments.length == 0) ? this.today() : (strDate);
	strDate = this.addMonths(1, strDate);
	strDate = this.firstDayOfMonth(strDate);
	strDate = this.addDays(-1, strDate);
	return strDate;
}

DateUtils.prototype.firstDayOfYear = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date.setMonth(0);
	date.setDate(1);
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.lastDayOfYear = function(strDate) {
	var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
	date.setMonth(11);
	date.setDate(31);
	return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.today = function(format) {
	if(getToday && typeof(getToday)=="function"){
		return getToday();
	}else{
		if (arguments.length == 0) {
			return this.toString(new Date(), "YYYY-MM-DD");
		} else {
			return this.toString(new Date(), format);
		}
	}
}
分享到:
评论
1 楼 cuixiping 2010-04-08  
不大实用。
只要有 dateAdd, dateDiff 差不多就都够用了

相关推荐

    c#中的日期处理函数

    本文将深入探讨C#中的日期处理函数,特别是`DateTime`类的使用方法。 1. `DateTime` 类型是C#中用于表示日期和时间的内置类型。通过以下方式可以创建一个表示当前时间的`DateTime`对象: ```csharp System....

    c通用函数库

    C通用函数库(c General Purpose Function Library,简称为ccufl)是一套为C语言开发者设计的、包含各种常用功能的代码库。它旨在提供一套标准化、高效且跨平台的函数集合,帮助开发者快速实现常见任务,提高开发...

    JavaScript的一些工具函数的封装包括url的参数处理数字字符串日期等相关操作函数

    再者,日期处理是JavaScript开发中的一大挑战,因为浏览器的原生`Date`对象有时并不能满足所有需求。这个工具库可能包含了自定义的日期格式化函数,如`formatDate`,它可以将日期对象按照用户指定的格式(如'YYYY-MM...

    2022年在ASP.NET中处理datetime的一些通用函数(VB)Java教程.docx

    以下是一些在VB.NET中处理DateTime的通用函数,这些函数可以帮助开发者进行日期和时间的操作和格式化。这些函数适用于考试准备,理解日期时间处理的基本概念。 1. 函数Date1() 这个函数使用了`TimeSpan`类来减去...

    js validator通用函数及实例

    在这个“js validator通用函数及实例”压缩包中,很显然包含了一些关于如何使用Validator的通用函数以及具体的示例代码。 首先,`Validator`通常包括一系列验证方法,如`isEmail`用于检查是否为有效的电子邮件地址...

    通用函数库c#语言

    "通用函数库c#语言"通常涵盖各种常用功能,如IP地址操作、文件管理、数据加密以及变量处理等。以下是对这些知识点的详细说明: 1. IP地址操作: 在C#中,处理IP地址通常会用到`System.Net`命名空间中的类,如`IP...

    Asp.net中的日期处理函数

    在Asp.net开发中,熟练掌握`DateTime.Now`和`ToString()`方法的使用,能够极大地提升日期处理的效率和准确性。不同的格式字符串可以满足各种应用场景的需求,使得开发者能够灵活地控制日期时间的显示形式。希望本文...

    Vfp通用函数

    "Vfp通用函数"这个主题涉及到的是VFP编程时常用的一些函数,这些函数可以提高开发效率,解决各种常见的编程问题。VFP中的函数集包括了数据处理、字符串操作、日期时间处理、数学运算等多个方面。 1. **数据处理函数...

    EXCEL中TEXT函数与日期函数详解.pdf

    与日期函数结合使用,可以实现更加灵活的日期处理。 TEXT函数的基本语法为:TEXT(value,format_text)。其中,value是要转换的数值或日期,format_text是转换的格式字符串。 常用的TEXT函数格式字符串有: * "YYYY...

    DINP的通用函数库、公共数据结构等.zip

    通用函数库是编程语言中预定义的一系列函数集合,它们提供了一套标准化的方法来处理常见的任务,如数学运算、字符串操作、文件I/O等。在DINP中,这个函数库可能包含了一系列特定于该框架的实用工具函数,帮助开发者...

    字符串转换、天数到日期的转换函数组

    标签中提及的"天数到日期的转换函数",暗示了这个函数可能是一个通用的工具,不仅适用于FOXPRO DBF,也可能适用于其他类似情况,比如处理存储为天数的日期数据。 在压缩包内的文件`typecast`可能是实现这个转换功能...

    Sql Server 中一个非常强大的日期格式化函数

    ### SQL Server 中强大的日期格式化函数:CONVERT 在SQL Server中处理日期和时间数据时,经常需要将日期和时间转换成不同的格式以便于展示或分析。`CONVERT` 函数是SQL Server中最常用的一种方法来实现日期和时间...

    JS通用表单验证函数1

    论坛帖子通常会分享代码示例和实践经验,讨论各种数据类型如字符串、数字、日期的验证方法,以及如何处理特殊数据类型如对象和数组。 另一个文件"javaScript通用数据类型校验 - JavaScript - web - JavaEye论坛....

    window下通用函数借口类

    这个"Window下通用函数借口类"正是为了满足这样的需求,提供了一整套便利的工具函数。 1. **时间处理**:函数接口可能包含获取当前时间、格式化日期时间、计算时间差等功能。例如,可以有`GetSystemTime()`用于获取...

    asp.net 通用函数代码ToolHelper.rar

    在提供的压缩包“asp.net 通用函数代码ToolHelper.rar”中,我们可以预期找到一些适用于多种场景的ASP.NET自定义函数,这些函数可能极大地提高了开发效率并简化了常见任务的处理。 `ToolHelper`通常是一个包含各种...

    ORACLE第四章单行函数ppt课件.ppt

    本章要点包括字符函数、数字函数、日期函数、转换函数和通用函数等单行函数。 字符函数 字符函数用于处理字符串,包括大小写处理函数和字符处理函数。大小写处理函数可以将字符串转换为大写、小写或首字母大写,...

    C#日期函数使用大全

    在 C# 编程语言中,日期函数是一组非常重要的函数,它们可以帮助开发者快速地处理日期和时间相关的操作。在本节中,我们将详细介绍 C# 中的日期函数的使用方法和示例代码。 1. 获取当前日期和时间 使用 DateTime....

    博途V16的扩展函数库LGF

    "LGF"(可能代表“逻辑通用函数”或者“灵活通用函数”)是针对博途V16的一个扩展函数库,它旨在为用户在编程过程中提供更多的便利和功能增强。 LGF库包含了多种通用的块(Function Blocks, FBs)和指令,这些块...

    oracle函数总结

    Oracle数据库提供了多种函数来处理不同的数据类型,包括字符函数、数值函数、日期函数、转换函数、通用函数等。下面将对这些函数进行详细的介绍。 字符函数 字符函数用于处理字符串数据,常用的字符函数有: 1. `...

    Gbase8s系统函数.docx

    Gbase8s系统函数是南大通用数据库Gbase8s中的一个重要组件,提供了多种函数来帮助用户更方便地处理和分析数据。这些函数可以分为多个类别,包括集合函数、代数函数、时间函数、数据转换函数、基数函数、字符串处理...

Global site tag (gtag.js) - Google Analytics