/**
* 日期工具类
*/
define(function(require, exports, module) {
var constants = require("constants"); // 常量类 /**
* 描述: 把日期格式字符串转换成js Date类型
*
* @param dateStr: 日期字符串 格式必须为 yyyy-MM-dd hh:mm:ss 或 yyyy-MM-dd hh:mm:ss.S
* @returns 返回JS日期对象
*/
function getDateByStr(dateStr){
if (!dateStr) {
return;
}
//去掉后面毫秒数
if (dateStr.indexOf(".") != -1) {
dateStr = dateStr.substring(0, dateStr.indexOf("."));
} // 形如20160101120101转换成2016-01-01 12:01:01
if ($.trim(dateStr).length == 14 && dateStr.indexOf("-") == -1) {
dateStr = dateStr.replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/, '$1-$2-$3 $4:$5:$6');
} // 形如20160101转换成2016-01-01
if ($.trim(dateStr).length == 8 && dateStr.indexOf("-") == -1) {
dateStr = dateStr.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3 00:00:00');
}
dateStr = dateStr.replace(new RegExp("-", "gm"), "/");
return new Date(dateStr);
} /**
* 描述:把yyyy-MM-dd hh:mm:ss (.S)日期字符串转化为指定格式的日期字符串
*
* @author
* @param srcDate: 1、源日期为日期格式的字符串 如:2015-11-12 11:34:45
* 2、源日期为Date类型 如:new Date();
* @param fmt: 格式,如:yyyy-MM-dd
*/
function dateFormat(srcDate, fmt){
if (!srcDate || !fmt) {
return srcDate;
} // 把字符串转换成日期对象
var date = (typeof(srcDate) == "object") ? srcDate : getDateByStr(srcDate); // 非date类型时返回原字符串
if (isNaN(date.getDay())) {
return srcDate;
} var o = {
"M+" : date.getMonth() + 1, // 月份
"d+" : date.getDate(), // 日
"h+" : date.getHours(), // 小时
"m+" : date.getMinutes(), // 分
"s+" : date.getSeconds(), // 秒
"q+" : Math.floor((date.getMonth() + 3) / 3), // 季度
"S" : date.getMilliseconds() // 毫秒
}; // 年份比较特殊,单独处理
if (/(y+)/.test(fmt)){
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
} for ( var k in o){
if (new RegExp("(" + k + ")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
} return fmt;
} /**
* 描述: 获取时间毫秒数
*
* @author
* @param date: 格式为yyyy-MM-dd hh:mm:ss 或 yyyy-MM-dd hh:mm:ss.S的时间字符串
* @returns 返回时间毫秒数
*/
function getDateTime(date){
if (!date) {
return 0;
}
//去掉后面毫秒数
if (date.indexOf(".") != -1) {
date = date.substring(0, date.indexOf("."));
}
date = date.replace(new RegExp("-", "gm"), "/");
return (new Date(date)).getTime();
} /**
* 描述:根据年份和月份计算出有多少天
* @author
* @param year: 年份
* @param month: 月份
* @returns 天数
*/
function getMonthDays(year, month){
var monthStartDate = new Date(year, month - 1, 1);
var monthEndDate = new Date(year, month, 1);
return (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);
} /**
* 计算某日期为一周中的哪天
*/
function cweekday(wday)
{
var hzWeek= new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日");
return hzWeek[wday];
} /**
* 获取当前时间前后N天日期的方法
* 可以得到昨天,今天,明天,一月前,三月前,半年前,一年前的日期,
* 只要修改参数就可以实现得到任何一个天数
* 昨天:getDateStr(-1)
* 今天:getDateStr(0)
* 明天:getDateStr(1)
*
* formate==> 1:yyyyMMdd
* 2:yyyy-MM-dd
*/
function getDateStr(addDayCount, formate){
var dd = new Date();
dd.setDate(dd.getDate() + addDayCount); //获取addDayCount天后的日期
var y = dd.getFullYear();
var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd.getMonth() + 1);//获取当前月份的日期,不足10补0
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号,不足10补0
if(1 == formate){
return y + m + d; //格式:yyyyMMdd
}else if(2 == formate){
return y + "-" + m + "-" + d;
}
} function cala(date)
{
var y = date.substring(0,4);//年份
var m = date.substring(5,7);//月份
var d = date.substring(8,10);//日期
var next = 0;
var cash_time;
var ttt=new Date(y,m-1,d).getTime()+next * 24000 * 3600; var theday=new Date();
theday.setTime(ttt);
var weekday = cweekday(theday.getDay()); return weekday;
} /**
*获取当前时间和日期
*@param srcDate: 1、源日期为日期格式的字符串 如:2015-11-12 11:34:45
* 2、源日期为Date类型 如:new Date();
*/
function getNowDate(fmt){
var nowDate=new Date();
if(fmt==1){
return dateFormat(nowDate, "2015-11-12 11:34:45");
}else{
return dateFormat(nowDate,"yyyy-MM-dd");
}
} var dateUtils = {
"dateFormat" : dateFormat, // 根据格式显示日期
"getMonthDays" : getMonthDays, //根据年份和月份计算出有多少天
"getDateTime" : getDateTime, //获取时间毫秒数
"cala" : cala //根据日期计算该日为一周中的某天
}; //暴露对外的接口
module.exports = dateUtils;
});

js日期工具的更多相关文章

  1. c# js日期工具

    c#获取日期当年最后一天:model.StartDate.AddYears(1).AddSeconds(-1) js日期工具: var dateToolObj = { methods: { //url ...

  2. JS 日期工具类-基于yDate

    源码下载 前言:最近在用到JS日期操作时,发现有一些不方便,于是搜素了一些网上的资料,基于一个开源工具类-yDate 进行了个性化定制,封装成了一个日期工具类工具函数大概介绍:1.普通的日期操作2. ...

  3. JS日期工具类(转)

    javascript Date format(js日期格式化) https://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.htm ...

  4. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  5. 我用的一些Node.js开发工具、开发包、框架等总结

    开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 2.做些小型项目用Sublime Text. 3.Browser ...

  6. Node.js开发工具、开发包、框架等总结

    开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢.2.做些小型项目用Sublime Text.3.Browserif ...

  7. Node.js 常用工具

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ...

  8. java工具类-日期工具类

    1.获得时间戳 为了统一其他语言的如php和unix系统获取的时间戳是10位长度的,精确到秒. java时间戳长度是13位,精确到毫秒 我们获取时间戳需要相应处理. //获取当前时间戳,除以1000, ...

  9. Node.js 常用工具util包

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.isError(obj); util.is ...

随机推荐

  1. HDU3507_Print Article

    这个题目又是一个典型的dp斜率优化的题目.题意是给你n个数,你需要做的是把这个n个数分为连续的若干段,每段的权值为这段数字的和的平方加上M.求最小的总权值. 我们可以根据题意写出朴素版的dp状态转移方 ...

  2. Check Corners HDU - 2888(二维RMQ)

    就是板题.. 查询子矩阵中最大的元素...然后看看是不是四个角落的  是就是yes  不是就是no  判断一下就好了 #include <iostream> #include <cs ...

  3. DjangoORM创建表结构以及生成数据库结构

    1. ORM的两种 DB first: 创建表结构--根据表结构生成类-----根据类来操作数据库 Code first: 先写代码------再写类----执行命令(一个类生成一个表)当前主流的用法 ...

  4. 在 QML 中创建 C++ 导入类型的实例

    在 QML 中创建 C++ 导入类型的实例 文件列表: Project1.pro QT += quick CONFIG += c++ CONFIG += declarative_debug CONFI ...

  5. 51nod1222 最小公倍数计数 莫比乌斯反演 数学

    求$\sum_{i = 1}^{n} \sum_{j = 1}^{i} [lcm(i, j) \le n]$因为这样不好求,我们改成求$\sum_{i = 1}^{n} \sum_{j = 1}^{n ...

  6. Spring Boot系列教程七:Spring boot集成MyBatis

    一.创建项目         项目名称为 “springboot_mybatis_demo”,创建过程中勾选 “Web”,“MyBatis”,“MySQL”,第一次创建Maven需要下载依赖包(耐心等 ...

  7. 洛谷P1029 最大公约数和最小公倍数问题

    题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为 ...

  8. git 列出两个 commit 之间变更的文件列表

    git diff <commit1> <commit2> --stat 如: git diff 74ecf17dc 1ee25ed3c --stat src/assets 上面 ...

  9. Libevent学习笔记(五) 根据例子学习bufferevent

    libevent中提供了一个Hello-world.c 的例子,从这个例子可以学习libevent是如何使用bufferevent的. 这个例子在Sample中 这个例子之前讲解过,这次主要看下buf ...

  10. HDU 6038

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...