function DateUtil(){
this.url = "";
this.op={
partten:{mdy:"m/d/y",ymd:"y/m/d",dmy:"d/m/y"}
};
this.cdate = new Date();
} DateUtil.prototype.updateDate=function(){
this.cdate = new Date();
}; DateUtil.prototype.setTime=function(v){
this.cdate.setTime(v);
}; DateUtil.prototype.getYear=function(){
return this.cdate.getFullYear();
};
DateUtil.prototype.getMonth=function(){
return this.cdate.getMonth()+1;
}; DateUtil.prototype.getDay=function(){
return this.cdate.getDate();
}; DateUtil.prototype.getFirstDayOfMonth=function(d){
var currentMonth = new Date(d.getTime())||new Date();
currentMonth.setDate(1);
return currentMonth;
}; DateUtil.prototype.getLastDayOfMonth=function(d){
var nextMonth = new Date(d.getTime())||new Date();
var month = nextMonth.getMonth();
nextMonth.setMonth(month+1);
nextMonth.setDate(0);
return nextMonth;
}; //对Date的扩展,将 Date 转化为指定格式的String
//月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
//年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
//例子:
//(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
//(new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
DateUtil.prototype.format = function (d,fmt) { //author: meizz
var o = {
"M+": d.getMonth() + 1, //月份
"d+": d.getDate(), //日
"h+": d.getHours(), //小时
"m+": d.getMinutes(), //分
"s+": d.getSeconds(), //秒
"q+": Math.floor((d.getMonth() + 3) / 3), //季度
"S": d.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (d.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;
}; DateUtil.prototype.getHours=function(){
return this.cdate.getHours();
};
DateUtil.prototype.getMinutes=function(){
return this.cdate.getMinutes();
};
DateUtil.prototype.getSeconds=function(){
return this.cdate.getSeconds();
}; DateUtil.prototype.getToday=function(){
return this.format(this.cdate, "yyyy-MM-dd");
};
/**
* 计算出相差的时间后的日期
* @param d 日期
* @param s 相差的时间
* @param t 类型:day天, month月, year年, hour, minute, second
*/
DateUtil.prototype.getNewDate=function(d, s, t){
if("year" == t){
var year = d.getFullYear() + s;
var strDate = year+"/"+this.format(d, "MM/dd hh:mm:ss");
return new Date(strDate);
}else if("month" == t){
var year = d.getFullYear();
var month = d.getMonth()+1 + s;
var strDate="";
if (month==0) {
strDate = (year-1)+"/"+12+"/"+this.format(d, "dd hh:mm:ss");
}else if (month>12) {
strDate = (year+1)+"/"+1+"/"+this.format(d, "dd hh:mm:ss");
}else {
strDate = year+"/"+month+"/"+this.format(d, "dd hh:mm:ss");
}
return new Date(strDate);
}else if("day" == t){
var lt = d.getTime() + s*24*60*60*1000;
return new Date(lt);
}else if("hour" == t){
var lt = d.getTime() + s*60*60*1000;
return new Date(lt);
}else if("minute" == t){
var lt = d.getTime() + s*60*1000;
return new Date(lt);
}else if("second" == t){
var lt = d.getTime() + s*1000;
return new Date(lt);
}
return d;
}; DateUtil.prototype.parseDate=function(s){
if(s != null && s != ""){
try{
if(typeof(s) == "string"){
s = s.replace(/-/g, "/");
return new Date(s);
}else if(typeof(s) == "number"){
return new Date(s);
}
}catch(e){
alert(e.message);
}
}
return null;
}; DateUtil.prototype.getCurrentTimeString=function(){
return this.getYear()+""+this.getMonth()+""+
this.getDay()+""+this.getHours()+""+
this.getMinutes()+""+this.getSeconds();
}; DateUtil.prototype.getWeek=function(date){
var week = 0;
var df = "mmddyy";
if(date==null || date =="" || typeof(date) == "undefined"){
date = this.getToday();
df = "yyMMdd";
}
date = date.replace(/\//g,"-");
week = $.ajax({
type:"get",
url:basePath+"/dateUtil/week/"+encodeURIComponent(date)+"/"+df,
cache:false,
async:false,
dataType:"text"
}).responseText;
return week;
}; DateUtil.prototype.getQuarter=function(date, format){
var month = 0;
if(date && typeof(date) == "string" && date != "" && format && format != ""){
var p = this.op.partten[format];
var index = p.indexOf("m");
var d = date.split("/");
if(index == 0){
month = parseInt(d[0],10);
}else{
month = parseInt(d[1],10);
}
}else if(date && typeof(date) == "object"){
month = date.getMonth();
}else if(date && typeof(date) == "number"){
month = date;
}else{
month = this.getMonth();
}
if(month % 3 == 0){
return month / 3;
}else{
return parseInt(month / 3 + 1);
}
}; DateUtil.prototype.getQuarterByMonth = function(m){
if(m % 3 == 0){
return m / 3;
}else{
return parseInt(m / 3 + 1);
}
};
/**
* 若date为空,则返回当前日期是周几,否则数据类型为string,格式都为m/d/y
* @param date
* @returns
*/
DateUtil.prototype.getDayOfWeek=function(date){
if(date && typeof(date) == "string"){
var d = date.split("/");
var md = new Date(parseInt(d[2]), parseInt(d[0]), parseInt(d[1]));
return md.getDay();
}else{
this.updateDate();
return this.getDay();
}
};
/**
* 得到一个日期所在周的开始时间和结束时间,不传参数为当前周
* @param date
* @returns {___anonymous5423_5464}
*/
DateUtil.prototype.getStartAndEndDayOf=function(date, type){
var today = date||new Date();
var startDate = "", endDate = "";
if(type == "day"){
startDate = this.format(today, "yyyy-MM-dd");
return {"startDate":startDate, "endDate":startDate};
}else if(type == "week"){
var dayOfweek = today.getDay();
var monday = new Date(today.getFullYear(), today.getMonth(), today.getDate()-dayOfweek+1);
var sunday = new Date(today.getFullYear(), monday.getMonth(), monday.getDate()+6);
startDate = this.format(monday, "yyyy-MM-dd");
endDate = this.format(sunday, "yyyy-MM-dd");
return {"startDate":startDate, "endDate":endDate};
}else if(type == "month"){
var monday = this.getFirstDayOfMonth(today);
var sunday = this.getLastDayOfMonth(today);
startDate = this.format(monday, "yyyy-MM-dd");
endDate = this.format(sunday, "yyyy-MM-dd");
return {"startDate":startDate, "endDate":endDate};
}else if(type == "quarter"){
var quarter = this.getQuarter(today, "");
startDate = this.format(new Date(today.getFullYear(), quarter*3-3, 1), "yyyy-MM-dd");
endDate = this.format(new Date(today.getFullYear(), quarter*3, 0), "yyyy-MM-dd");
return {"startDate":startDate, "endDate":endDate};
}else if(type == "year"){
startDate = today.getFullYear()+"-01-01";
endDate = today.getFullYear()+"-12-31";
return {"startDate":startDate, "endDate":endDate};
}else{
startDate = this.format(today, "yyyy-MM-dd");
return {"startDate":startDate, "endDate":startDate};
}
}; DateUtil.prototype.getPreDateForGapTime = function(date, type){
var today = this.parseDate(date)||new Date();
if(type.indexOf("pre") == 0){
type = type.replace("pre","");
var endDate = this.format(today, "yyyy-MM-dd");
if(type.toLowerCase() == "day"){
return {"startDate":endDate, "endDate":endDate};
}else if(type.toLowerCase() == "week"){
var startDate = this.format(this.getNewDate(today, -7, "day"), "yyyy-MM-dd");
return {"startDate":startDate, "endDate":endDate};
}else if(type.toLowerCase() == "month"){
var startDate = this.format(this.getNewDate(today, -1, "month"), "yyyy-MM-dd");
return {"startDate":startDate, "endDate":endDate};
}else if(type.toLowerCase() == "quarter"){
var startDate = this.format(this.getNewDate(today, -90, "day"), "yyyy-MM-dd");
return {"startDate":startDate, "endDate":endDate};
}else if(type.toLowerCase() == "year"){
var startDate = this.format(this.getNewDate(today, -1, "year"), "yyyy-MM-dd");
return {"startDate":startDate, "endDate":endDate};
}else{
return {"startDate":endDate, "endDate":endDate};
}
}else{
return this.getStartAndEndDayOf(date, type);
}
}; DateUtil.prototype.newgetPreDateForGapTime = function(date, type,i){
var today = this.parseDate(date)||new Date();
if(type.indexOf("pre") == 0){
type = type.replace("pre","");
if(type.toLowerCase() == "day" || type.toLowerCase() == "hour" || type.toLowerCase() == "minute"){
var startDate = this.format(this.getNewDate(today, 1*i, "day"), "yyyy-MM-dd");
var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase());
return {"startDate":time.startDate, "endDate":time.endDate};
}else if(type.toLowerCase() == "week"){
var startDate = this.format(this.getNewDate(today, 7*i, "day"), "yyyy-MM-dd");
var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase());
return {"startDate":time.startDate, "endDate":time.endDate};
}else if(type.toLowerCase() == "month"){
var startDate = this.format(this.getNewDate(today, 1*i, "month"), "yyyy-MM-dd");
var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase());
return {"startDate":time.startDate, "endDate":time.endDate};
}else if(type.toLowerCase() == "quarter"){
var startDate = this.format(this.getNewDate(today, 90*i, "day"), "yyyy-MM-dd");
var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase());
return {"startDate":time.startDate, "endDate":time.endDate};
}else if(type.toLowerCase() == "year"){
var startDate = this.format(this.getNewDate(today, 1*i, "year"), "yyyy-MM-dd");
var time=this.getStartAndEndDayOf(new Date(startDate), type.toLowerCase());
return {"startDate":time.startDate, "endDate":time.endDate};
}else{
return {"startDate":endDate, "endDate":endDate};
}
}else{
return this.getStartAndEndDayOf(date, type);
}
};
function isLeapYear(year) {
return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}
/**
* 获取某一年份的某一月份的天数
*
* @param {Number} year
* @param {Number} month
*/
function getMonthDays(year, month) {
return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28);
}
/**
* 获取某年的某天是第几周
* @param {Number} y
* @param {Number} m
* @param {Number} d
* @returns {Number}
*/
function getWeekNumber(y, m, d) {
var now = new Date(y, m - 1, d),
year = now.getFullYear(),
month = now.getMonth(),
days = now.getDate();
//那一天是那一年中的第多少天
for (var i = 0; i < month; i++) {
days += getMonthDays(year, i);
} //那一年第一天是星期几
var yearFirstDay = new Date(year, 0, 1).getDay() || 7; var week = null;
if (yearFirstDay == 1) {
week = Math.ceil(days / yearFirstDay);
} else {
days -= (7 - yearFirstDay + 1);
week = Math.ceil(days / 7) + 1;
} return week;
} var DUtil = new DateUtil();

  

时间js的更多相关文章

  1. js获取当前时间&js 页面时钟

    js获取当前时间 //获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = ...

  2. js获取当前时间,js时间函数

    Js获取当前日期时间及其它操作,js时间函数 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); ...

  3. 当前时间 js

    当前时间-倒计时下载 效果: 代码: <!doctype html> <html> <head> <meta http-equiv="Content ...

  4. 页面显示时间js

    //页面显示时间 <span align="left" id="OperatorTime"> </span> <script> ...

  5. js格式化时间 js格式化时间戳

    一个js格式化时间和js格式化时间戳的例子. 代码:/** * 时间对象的格式化; */Date.prototype.format = function(format) { /* * eg:forma ...

  6. 日期时间JS插件

    首先要引入基本文件:bootstrap的基本js和css文件,因为用到了jquery所以要引入jquery文件 <script src="jquery-1.11.2.min.js&qu ...

  7. MVC中的时间js格式化

    记录下我遇到的一个,MVC中post请求返回一个JSON字符串,其中包含数据库中的时间格式(如:/Date(10000000000)/),不知道怎么处理.百度的方法都不适用,经自己研究,做成了一个Jq ...

  8. js动态获取当前系统时间+js字符串转换为date日期对象

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  9. 时间js转换方法Date("149...") 转成 2016-7-12 21:23:34 009

     function timeFormatter(value) {     var da = new Date(parseInt(value.replace("/Date(", &q ...

随机推荐

  1. PHP7的五大新特性

    如果你使用的是基于 composer 和 PSR-4 的框架,这种写法是否能成功的加载类文件?其实是可以的,composer 注册的自动加载方法是在类被调用的时候根据类的命名空间去查找位置,这种写法对 ...

  2. MySQL的索引实现原理

    MySQL数据库索引总结使用索引的原由数据结构Hash.平衡二叉树.B树.B+树区别机械硬盘.固态硬盘区别Myisam与Innodb B+树的区别MySQL中的索引什么数据结构B+树中的节点到底存放多 ...

  3. static变量的作用

    在C语言中,关键字static的意思是静态的,有3个明显的作用: 1. 在函数体内,静态变量具有记忆作用,即一个被声明为静态的变量在这一函数被调用的过程中其值维持不变. 2. 在模块内(但在函数体外) ...

  4. Hibernate与JDBC、EJB、JDO的比较

    常用的数据库操作包括:JDBC.EJB.JDO以及Hibernate.它的各有优缺点: (1) JDBC:多数Java开发人员是用JDBC来和数据库进行通信,它可以通过DAO模式进行改善和提高.但这种 ...

  5. Pandas基本功能

    到目前为止,我们了解了三种Pandas数据结构以及如何创建它们.接下来将主要关注数据帧(DataFrame)对象,因为它在实时数据处理中非常重要,并且还讨论其他数据结构. 系列基本功能 编号 属性或方 ...

  6. NumPy切片和索引

    NumPy - 切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样. 如前所述,ndarray对象中的元素遵循基于零的索引. 有三种可用的索引方 ...

  7. Reflection01_获取Class对象

    1.java 代码: package reflectionZ; public class TreflectionZ { public static void main(String[] args) t ...

  8. 智课雅思词汇---二十四、形容词后缀-al-ial-ar-ary-ic-id-ish-ile-ine-oid-ory

    智课雅思词汇---二十四.形容词后缀-al-ial-ar-ary-ic-id-ish-ile-ine-oid-ory 一.总结 一句话总结: 1.形容词后缀-al? autumnal 英 [ɔː'tʌ ...

  9. mysql数据库(一):建表与新增数据

    一. 学习目标 理解什么是数据库,什么是表 怎样创建数据库和表(create) 怎样往表里插入数据(insert) 怎样修改表里的数据(update) 怎样删除数据库,表以及数据(delete) 二. ...

  10. TCP粘包处理 参考spserver

    TCP粘包出现的原因就不在详细描述了.TCP粘包是在做TCP编程时经常会遇到的问题,网上相关的参考也不少,大都都是一个热心人士编写的, 若仅用于学习就算了,若用真正用于项目还有待考虑. 本文就简述一下 ...