/**
* 日期工具类
*/
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. HDU4045_Machine scheduling

    题意为要你从编号为1-n的所有机器中间选择出r个机器且每一个机器的编号只差不小于k-1,然后将选择的r个机器分为m组有多少种方案. 其实这题目的两个步骤是相互独立的. 总共的方案数等于选择的方案数乘以 ...

  2. Java 读取Excel2007 jar包冲突的问题(org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException)

    1.jar包冲突报错问题 2.使用的jar包,以及重复jar包 3.删除重复jar包

  3. 【入门OJ】2003: [Noip模拟题]寻找羔羊

    这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...

  4. 洛谷 P1715 [USACO16DEC]Lots of Triangles好多三角形 解题报告

    P1715 [USACO16DEC]Lots of Triangles好多三角形 题目描述 农民约翰希望通过卖出他拥有的一部分土地来增加收入.他在这片土地上种了\(N\)棵树(\(3\le N\le ...

  5. linux内核分析 第二周 操作系统是如何工作的

    银雪纯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 ...

  6. linux下shell显示-bash-3.2$ 不显示路径解决方法

       linux操作下脚本不小心误删了很多东西,变成了下面的样子 在linux shell中不显示路径了,用起来很不方便. 如何改为显示路径的shell呢 步骤如下: vi ~/.bash_profi ...

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

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

  8. stout代码分析之零

    最近在使用mesos做高可用设计,在编译的过程中注意到mesos依赖stout,一个仅仅含有头文件的c++基础库.stout代码简洁,设计优雅,值得一读. stout从内容上可细分为以下几块: Pri ...

  9. tf.session.run()单函数运行和多函数运行区别

    tf.session.run()单函数运行和多函数运行区别 觉得有用的话,欢迎一起讨论相互学习~Follow Me problem instruction sess.run([a,b]) # (1)同 ...

  10. "Access restriction: The type BASE64Encoder is not accessible due to restrict"问题解决

    问题如题: Eclipse中有一种叫做存取限制的机制,来防止你错误使用那些非共享的API.通常来说,Eclipse做的是对的,因为两点,我们不想要使用非共享API的,而且Eclipse知道什么是共享的 ...