/**
* 日期工具类
*/
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. USB硬件接口相关

    1.USB 设备端的D+为何要拉一个1.5K电阻到3.3v上?(USB是5v供电,但通信的电平是3.3v,所以上拉电平为3.3v:若要上拉到5v,则上拉电阻为10k) usb有主从设备之分,主设备有: ...

  2. 使用oVal进行Java Bean 验证的注意事项

    如果需要不同条件验证不同的属性的时候,需要使用profiles属性,每个校验注解符中都有.注意:oVal默认是启用所有的profiles,所以在对单独一个profile进行启用的时候,需要先disab ...

  3. QT 选择对话框简单示例

    QT 选择对话框简单示例 部分代码: pDialog->addSeparator(); QAction *pmb2 = pDialog->addAction(QString::fromLo ...

  4. Exception异常 自定义异常

    public class Exception extends Throwable Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件. public ...

  5. 【JavaScript】BOM

    一.前言        接着前一章的内容,继续Js的学习. 二.内容 window对象 //确定窗口位置 var leftPos = (typeof window.screenLeft == &quo ...

  6. 【CF438E】The Child and Binary Tree(多项式运算,生成函数)

    [CF438E]The Child and Binary Tree(多项式运算,生成函数) 题面 有一个大小为\(n\)的集合\(S\) 问所有点权都在集合中,并且点权之和分别为\([0,m]\)的二 ...

  7. BZOJ 1070 修车 【费用流】

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序, ...

  8. 基于Memcached分布式系统DRDoS拒绝服务攻击技术研究(转)

    本次反射式拒绝服务攻击技术基于全球互联网分布式的Memcached服务器,需要储备一定得安全攻防知识,网络协议知识和python代码编程技术.希望在学习本篇文章知识前自行学习相关的基础知识,文章后面同 ...

  9. Linux内核分析第一周学习博客 --- 通过反汇编方式学习计算机工作过程

    Linux内核分析第一周学习博客 通过反汇编方式学习计算机工作过程 总结: 通过这次对一个简单C程序的反汇编学习,我了解到计算机在实际工作工程中要涉及大量的跳转指针操作.计算机通常是顺序执行一条一条的 ...

  10. HUD.2795 Billboard ( 线段树 区间最值 单点更新 单点查询 建树技巧)

    HUD.2795 Billboard ( 线段树 区间最值 单点更新 单点查询 建树技巧) 题意分析 题目大意:一个h*w的公告牌,要在其上贴公告. 输入的是1*wi的w值,这些是公告的尺寸. 贴公告 ...