当前位置 : 主页 > 网络编程 > JavaScript >

JavaScript对时间的处理

来源:互联网 收集:自由互联 发布时间:2021-06-28
JavaScript计算指定两个时间之间的时间差 var date1=new Date(); //开始时间 alert("aa"); var date2=new Date(); //结束时间 var date3=date2.getTime()-date1.getTime() //时间差的毫秒数 //计算出相差天数 var days=M
JavaScript计算指定两个时间之间的时间差
var date1=new Date();  //开始时间  
alert("aa");  
var date2=new Date();    //结束时间  
var date3=date2.getTime()-date1.getTime()  //时间差的毫秒数  
   
  
//计算出相差天数  
var days=Math.floor(date3/(24*3600*1000))  
   
//计算出小时数  
  
var leave1=date3%(24*3600*1000)    //计算天数后剩余的毫秒数  
var hours=Math.floor(leave1/(3600*1000))  
//计算相差分钟数  
var leave2=leave1%(3600*1000)        //计算小时数后剩余的毫秒数  
var minutes=Math.floor(leave2/(60*1000))  
   
  
//计算相差秒数  
var leave3=leave2%(60*1000)      //计算分钟数后剩余的毫秒数  
var seconds=Math.round(leave3/1000)  
   
  
alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
JavaScript关于Date基础用法
var myDate = new Date();  
myDate.getYear(); //获取当前年份(2位)  
myDate.getFullYear(); //获取完整的年份(4位,1970-????)  
myDate.getMonth(); //获取当前月份(0-11,0代表1月)         // 所以获取当前月份是myDate.getMonth()+1;   
myDate.getDate(); //获取当前日(1-31)  
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)  
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)  
myDate.getHours(); //获取当前小时数(0-23)  
myDate.getMinutes(); //获取当前分钟数(0-59)  
myDate.getSeconds(); //获取当前秒数(0-59)  
myDate.getMilliseconds(); //获取当前毫秒数(0-999)  
myDate.toLocaleDateString(); //获取当前日期  
var mytime=myDate.toLocaleTimeString(); //获取当前时间  
myDate.toLocaleString( ); //获取日期与时间
JS获取当前时间戳的方法
var timestamp =Date.parse(new Date());    结果:1280977330000       //不推荐; 毫秒改成了000显示  
  
var timestamp =(new Date()).valueOf();       结果:1280977330748       //推荐;   
  
var timestamp=new Date().getTime();         结果:1280977330748        //推荐;   
  
   
  
js中单独调用new Date();  显示这种格式  Mar 31 10:10:43 UTC+0800 2012  
  
但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数
将字符串形式的日期转换成日期对象
var strTime="2011-04-16";    //字符串日期格式             
var date= new Date(Date.parse(strTime.replace(/-/g,  "/")));      //转换成Data();  

new Date() ;     //参数可以为整数; 也可以为字符串; 但格式必须正确  
  
new Date(2009,1,1);       //正确  
  
new Date("2009/1/1");    //正确  
  
new Date("2009-1-1");    //错误  
  
new Date( year, month, date, hrs, min, sec)  按给定的参数创建一日期对象  
  参数说明:  
  year的值为:需设定的年份-1900。例如需设定的年份是1997则year的值应为97,即1997-1900的结果。所以Date中可设定的年份最小为1900;  
  month的值域为0~11,0代表1月,11表代表12月;  
  date的值域在1~31之间;  
  hrs的值域在0~23之间。从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;  
  min和sec的值域在0~59之间。
js的Date()返回格式转换
Date()返回格式:
Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)
而我们则需要这样的格式:
2015-3-19 12:00:00

1.日期格式转为日期标准字符串:2015-03-19
var formatDate = function (date) {  
    var y = date.getFullYear();  
    var m = date.getMonth() + 1;  
    m = m < 10 ? '0' + m : m;  
    var d = date.getDate();  
    d = d < 10 ? ('0' + d) : d;  
    return y + '-' + m + '-' + d;  
};  

2.js方法返回值:2015-03-19 12:00:00
var formatDateTime = function (date) {  
                var y = date.getFullYear();  
                var m = date.getMonth() + 1;  
                m = m < 10 ? ('0' + m) : m;  
                var d = date.getDate();  
                d = d < 10 ? ('0' + d) : d;  
                var h = date.getHours();  
                h=h < 10 ? ('0' + h) : h;  
                var minute = date.getMinutes();  
                minute = minute < 10 ? ('0' + minute) : minute;  
                var second=date.getSeconds();  
                second=second < 10 ? ('0' + second) : second;  
                return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;  
            };  

3.时间戳转为日期格式
var formatDateTime3 = function(time, format){  
          var t = new Date(time);  
          var tf = function(i){return (i < 10 ? '0' : '') + i};  
          return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function(a){  
              switch(a){  
                  case 'yyyy':  
                      return tf(t.getFullYear());  
                      break;  
                  case 'MM':  
                      return tf(t.getMonth() + 1);  
                      break;  
                  case 'mm':  
                      return tf(t.getMinutes());  
                      break;  
                  case 'dd':  
                      return tf(t.getDate());  
                      break;  
                  case 'HH':  
                      return tf(t.getHours());  
                      break;  
                  case 'ss':  
                      return tf(t.getSeconds());  
                      break;  
              }  
          })  
      };  

4.时间格式字符串转为时间戳(毫秒)
var time1=‘2016-01-01 17:22:37’;  
var date=new Date(time1.replace(/-/g, '/'));  //开始时间  
var time2=date.getTime(); 

将2015-03-12 12:00 转换成:Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)

var parserDate = function (date) {  
    var t = Date.parse(date);  
    if (!isNaN(t)) {  
        return new Date(Date.parse(date.replace(/-/g, "/")));  
    } else {  
        return new Date();  
    }  
};  
调用:parserDate("2015-03-19 12::00:00")

5.判断时间间隔不超过24个小时
String tt="2015-11-25 18:18:18 - 2015-11-26 12:09:27";    
String start=tt.substring(0,19);    
String end=tt.substring(22,tt.length());    
  
 var startTime=$("#searchDateRange").val().substring(0,19).replace(/-/g, '/');  
        var endTime=$("#searchDateRange").val().substring(22,41).replace(/-/g, '/');  
        var date1=new Date(startTime);  //开始时间  
        var date2=new Date(endTime);    //结束时间  
  
        var date3=date2.getTime()-date1.getTime()  //时间差的毫秒数  
        if(date3>60*60*24*1000){  
          alert("开始时间与结束时间间隔大于24小时!");  
          return false;  
        }
显示本站已运行x天x时x分x秒
//稍稍麻烦的就是,要计算两个时间之间的年数差,必须要考虑平年和闰年的问题。
//拓展:怎样才是闰年?
//需要同时满足两个条件:
//1、年份能被4整除;
//2、年份若是100的整数倍的话,需被400整除,否则是平年
//比如:1900年能被4整除,但是因为其是100的整数倍,却不能被400整除,所以是平年

//初始化时间  
//为了提高兼容性注意创建日期的格式,还要添加引号  
var start = new Date("2000/12/1");  
//把以下内容放到script标签内,创建id为times的div,并开启下面一条语句注释  
//show_date_time();  
  
function show_date_time(){  
    //周期性调用show_date_time()方法  
    setTimeout("show_date_time()", 1000);  
  
    var current = new Date();  
    //总秒数  
    var millisecond = Math.floor((current.getTime() - start.getTime())/1000);  
      
    //总天数  
    var allDay = Math.floor(millisecond/(24*60*60));  
  
    //注意同getYear的区别  
    var startYear = start.getFullYear();  
    var currentYear = current.getFullYear();  
      
    //闰年个数  
    var leapYear = 0;  
    for(var i=startYear;i
 
   366){  
            day = (allDay - leapYear*366)%365;  
        }else{  
                day = allDay;  
        }  
    //取余数(秒)  
    var remainder = millisecond%(24*60*60);  
    //小时数  
    var hour = Math.floor(remainder/(60*60));  
    //分钟数  
    var minute = Math.floor(remainder%(60*60)/60);  
    //秒数  
    var second = remainder - hour*60*60 - minute*60;   
    var span = "本站已运行" + (year>0 ? (year + "年"):"") + day + "天"   
        + hour + "小时" + minute + "分" + second + "秒" ;   
    document.getElementById("times").innerHTML = span;  
}  
  
//判断是否是闰年  
function isLeapYear(year){  
    if((year%4==0 && year%100!=0)||(year%100==0 && year%400==0)){  
        return true;  
    }  
    return false;  
}
 
string格式的日期时间字符串转为DateTime类型
方法一:Convert.ToDateTime(string)
string格式有要求,必须是yyyy-MM-dd hh:mm:ss

方法二:Convert.ToDateTime(string, IFormatProvider)
DateTime dt;
DateTimeFormatInfo dtFormat = new System.GlobalizationDateTimeFormatInfo();
dtFormat.ShortDatePattern = "yyyy/MM/dd";
dt = Convert.ToDateTime("2011/05/26", dtFormat);

方法二:DateTime.ParseExact()
string dateString = "20110526";
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
或者
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
附参考信息:
CultureInfo cultureInfo = CultureInfo.CreateSpecificCulture("en-US");
string format = "ddd MMM d HH:mm:ss zz00 yyyy";
string stringValue = DateTime.Now.ToString(format, cultureInfo); // 得到日期字符串
DateTime datetime = DateTime.ParseExact("Wed Aug 25 16:28:03 +0800 2010", format, cultureInfo); // 将字符串转换成日期


日期格式:yyyyMMdd HH:mm:ss(注意此字符串的字母大小写很严格)
yyyy:代表年份
MM:  代表月份
dd:  代表天
HH:  代表小时(24小时制)
mm:  代表分钟
ss:  代表秒
DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now;
dt.ToString();//2005-11-5 13:21:25
dt.ToFileTime().ToString();//127756416859912816
dt.ToFileTimeUtc().ToString();//127756704859912816
dt.ToLocalTime().ToString();//2005-11-5 21:21:25
dt.ToLongDateString().ToString();//2005年11月5日
dt.ToLongTimeString().ToString();//13:21:25
dt.ToOADate().ToString();//38661.5565508218
dt.ToShortDateString().ToString();//2005-11-5
dt.ToShortTimeString().ToString();//13:21
dt.ToUniversalTime().ToString();//2005-11-5 5:21:25
dt.Year.ToString();//2005
dt.Date.ToString();//2005-11-5 0:00:00
dt.DayOfWeek.ToString();//Saturday
dt.DayOfYear.ToString();//309
dt.Hour.ToString();//13
dt.Millisecond.ToString();//441
dt.Minute.ToString();//30
dt.Month.ToString();//11
dt.Second.ToString();//28
dt.Ticks.ToString();//632667942284412864
dt.TimeOfDay.ToString();//13:30:28.4412864
dt.ToString();//2005-11-5 13:47:04
dt.AddYears(1).ToString();//2006-11-5 13:47:04
dt.AddDays(1.1).ToString();//2005-11-6 16:11:04
dt.AddHours(1.1).ToString();//2005-11-5 14:53:04
dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04
dt.AddMonths(1).ToString();//2005-12-5 13:47:04
dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05
dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10
dt.AddTicks(1000).ToString();//2005-11-5 13:47:04
dt.CompareTo(dt).ToString();//0
dt.Add(?).ToString();//问号为一个时间段
dt.Equals("2005-11-6 16:11:04").ToString();//False
dt.Equals(dt).ToString();//True
dt.GetHashCode().ToString();//1474088234
dt.GetType().ToString();//System.DateTime
dt.GetTypeCode().ToString();//DateTime
dt.GetDateTimeFormats('s')[0].ToString();//2005-11-05T14:06:25
dt.GetDateTimeFormats('t')[0].ToString();//14:06
dt.GetDateTimeFormats('y')[0].ToString();//2005年11月
dt.GetDateTimeFormats('D')[0].ToString();//2005年11月5日
dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05
dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05
dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日
dt.GetDateTimeFormats('M')[0].ToString();//11月5日
dt.GetDateTimeFormats('f')[0].ToString();//2005年11月5日 14:06
dt.GetDateTimeFormats('g')[0].ToString();//2005-11-5 14:06
dt.GetDateTimeFormats('r')[0].ToString();//Sat
string="05 Nov 2005 14:06:25 GMT"
string.Format("{0:d}",dt);//2005-11-5
string.Format("{0}",dt);//2005年11月5日
string.Format("{0:f}",dt);//2005年11月5日 14:23
string.Format("{0:F}",dt);//2005年11月5日 14:23:23
string.Format("{0:g}",dt);//2005-11-5 14:23
string.Format("{0:G}",dt);//2005-11-5 14:23:23
string.Format("{0:M}",dt);//11月5日
string.Format("{0:R}",dt);//Sat
string="05 Nov 2005 14:23:23 GMT"
string.Format("{0:s}",dt);//2005-11-05T14:23:23
string.Format("{0:t}",dt);//14:23
string.Format("{0:T}",dt);//14:23:23
string.Format("{0:u}",dt);//2005-11-05 14:23:23Z
string.Format("{0:U}",dt);//2005年11月5日 6:23:23
string.Format("{0:Y}",dt);//2005年11月
string.Format("{0}",dt);//2005-11-5 14:23:23
string.Format("{0:yyyyMMddHHmmssffff}",dt)
计算某年某月的天数
int days = DateTime.DaysInMonth(2007, 8); 

//days = 31;
给日期增加一天、减少一天
DateTime dt =DateTime.Now; 
dt.AddDays(1); //增加一天 
dt.AddDays(-1);//减少一天
网友评论