zoukankan      html  css  js  c++  java
  • [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)

    前言

    [Ext JS 4] 实战之 带week(星期)的日期选择控件(二)

    的最后,有提到一个解决方案。

    不过这方案有一个条件  ==》 “2. 每年的周数从(1-52), 如果超过52 周,算到下一年的第一周”

    这个条件有一个漏洞就是: 像 2011 年, 全年53 周, 第 53周整周都是2011年的天数,所以算成2012年的第一周就不对了。

    综合: 还是两套标准之间的换算还是会有一些问题。

    既然这样就不去混合使用两套标准的方法。 对于每个星期一周日开始的标准来说, 可以有更简单的方法。

    解决方案

    算法思想:

    1. 每年的第一天(01/01) 是这一年的第一周。

    2. 年中的某一天减去第一天的天数 再加上 第一天是这一年的第几天 后  除以7; 往上取整得到的整数就应该是这天的周数。

    function getWeekNumber(date)
    {
    	var onejan = new Date(date.getFullYear(),0,1);
    	return Math.ceil((((date - onejan) / 86400000) + onejan.getDay()+1)/7);
    }


    说明:

    1. 两个日期相减得到的是这两个日期之间的距离的毫秒数

    2. 86400000的由来 是 24*3600*1000  (1000ms = 1s ; 1h = 3600s; 1d = 24h)

    3. getDay() 取值是从 0 到 6, getDay()+1 是得到是第几天

    这样得到 W1335 这样的周的方式就很简单了:

    function getWeekStrOfDate(date)
    {
    	var weekStr = null;
    	if(date!=null)
    	{
    		weekStr = "W";
    		var dateYear = date.getFullYear();
    		var yearStr = dateYear.toString();
    		yearStr = yearStr.substring(2,4);
    		var dateWeek = getWeekNumber(date);
    		var dateWeekStr = dateWeek.toString();
    		if(dateWeekStr.length<2)
    		{
    			dateWeekStr = "0" + dateWeekStr;
    		}
    		weekStr += yearStr;
    		weekStr += dateWeekStr; 	
    	}
    	return weekStr;
    }


    以上经过严格验证,没有问题。

     

     

  • 相关阅读:
    配置gem5-gpu模拟环境
    如何避免并发情况下的重复提交
    避免重复执行
    java线程池
    java动态代理
    Java 静态代理
    Java 静态代理和动态代理
    Spring的事务传播性
    mybatis配置(Configuration.xml)详解
    mybati之parameterType传递多个参数
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3290143.html
Copyright © 2011-2022 走看看