﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-QingFeng-随笔分类-开源随感</title><link>http://www.cnitblog.com/Qing-Feng/category/3532.html</link><description>青草可以无语，山峰可以无言，青峰岂能无情、无义</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 14:49:45 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 14:49:45 GMT</pubDate><ttl>60</ttl><item><title>写计算第几周的函数</title><link>http://www.cnitblog.com/Qing-Feng/archive/2006/08/07/14887.html</link><dc:creator>【青峰小寨】</dc:creator><author>【青峰小寨】</author><pubDate>Mon, 07 Aug 2006 15:04:00 GMT</pubDate><guid>http://www.cnitblog.com/Qing-Feng/archive/2006/08/07/14887.html</guid><wfw:comment>http://www.cnitblog.com/Qing-Feng/comments/14887.html</wfw:comment><comments>http://www.cnitblog.com/Qing-Feng/archive/2006/08/07/14887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/Qing-Feng/comments/commentRss/14887.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Qing-Feng/services/trackbacks/14887.html</trackback:ping><description><![CDATA[
		<p dir="ltr" style="MARGIN-RIGHT: 0px">　　 一个朋友向我请教这个问题，我当时一个反应是，“不是有几个内部函数可以解决吗”，结果我再自己想想好象很复杂，又要考虑相隔每月天数又是闰年什么的，还好幸亏没有象这样的思维写下去，不然写出来会被<img height="20" src="http://www.cnitblog.com/Emoticons/QQ/12.gif" width="20" border="0" />死去的，基于这种“压力”下(不知道是谁说的，没有压力办不成事，这回我有点相信了！)，我沉默了，打开了eclipse(才学不久，想把脸打肿一下)。<br />　　拿起笔在纸上画了画，而且是画的想blog日历格式(大概想blog想疯了)，假如1日是星期<font color="#ff0000">三</font>，11日是星期日，中间相隔11-1+1 = <font color="#ff0000">11</font>天(这小学都会<img height="20" src="http://www.cnitblog.com/Emoticons/QQ/13.gif" width="20" border="0" />)，假如1日就是第一周，那么这11日是第二周怎么来的呢？(看图一看就知道<img height="20" src="http://www.cnitblog.com/Emoticons/QQ/14.gif" width="20" border="0" />)也就是说一定跟中间相隔几个7天有关，仔细看了看这图，11日刚好排在第二行末，每行7个(又废话了)，就是14/7=2，即第二周，那么答案就出来了，(相隔)11 + (星期)3 = 14除以7就是第二周，推而之，12日是15/7 加上15%7(是否有余数，有就1，没有就0)，故而第三周。<br />　　于是，我用javascript(当前在研究这，D和J一时又想不起来)语言写下了以下函数：<br />　　<br /> <font color="#800080">     <font color="#008000">  //计算从beginDate开始计算，posDate是第几周<br /></font>        <font color="#0000ff">function</font> calExaWeek(beginDate, posDate)<br />       {<br />             <font color="#008000"> //为了考虑周全，格式化日期时间对象<br /></font>             <font color="#0000ff">function</font> formatDate(date)<br />            {<br />                 <font color="#0000ff">return </font><font color="#0000ff">new </font><font color="#800080">Date</font>(date.getFullYear(), date.getMonth(), date.getDate());<br />            }<br /> <br />           <font color="#0000ff">var</font> msSpan = (formatDate(posDate) - formatDate(beginDate)) / (<font color="#ff1493">24</font> * <font color="#ff1493">60</font> * <font color="#ff1493">60</font> * <font color="#ff1493">1000</font>); <font color="#008000">//计算相隔天数<br /></font> <br />           <font color="#0000ff">var</font> beginDay = beginDate.getDay();  <font color="#008000">//得到开始日期是星期几<br /></font> <br />           <font color="#0000ff">var</font> temp = beginDay + msSpan;<br />    <br />           <font color="#0000ff">var</font> m = Math.floor(temp / 7);  <br />           <font color="#0000ff">var</font> n = temp % 7;<br />           <font color="#0000ff">if </font>(n &gt; 0)<br />               m = m + 1;<br /><font color="#008000">           /*以上这一小部分可以省略为<br />             var m = Math.floor(temp / 7) + (temp % 7 &gt; 0);<br />           */</font><br /><br />           <font color="#0000ff">return</font> m;<br />      }</font></p>
		<p dir="ltr" style="MARGIN-RIGHT: 0px">        例如，以下结果是第2周<br />        alert(calExaWeek(new Date(1970,0,1), new Date(1970,0,9)));<br /><br />　　我在java领域里还是小学生，不过认识java到有段时间了，《Java夜未眠》这仍记忆尤新的，那些java历史且不说，就现在eclipse虽也开始好长一段时间了，它仍是最强大的开发平台或称为环境(IDE),不说它的免费它的开源，就它的可扩展性就能锁战披沥。<br />　　修理汽车需要拧螺丝，打开扳手工具包，试图找到合适的扳手。但是那些扳手的型号都不对，因为那个螺丝都属于公制标准的。只能使用与理想尺寸最相近的扳手。不好的做法结果是把那个螺丝弄裂了，只好去买一个专用的工具来下掉它。这个故事的精髓是：<b><font color="#ff0000">实现特定的事务永远需要使用恰当的工具</font></b>。现在java使用者们都迅速迁移到eclipse上来了。<br />　　我就以这个小小故事做为结尾吧，对于eclipse也不用多谈，各位可能都是前辈，但是还需要注意一点，语言对程序员而言永远也只能看成是工具，工具不好用了要换的，但是做为程序员不能因为换工具而气势低落被打败，其实你已经拥有了编程技巧和方法，更专业一点就是“算法”，根本就是“换汤不换药”，没有什么了不起，有药不要汤不照样治病！<br /></p>
		<div align="right">
				<font color="#a9a9a9" size="2">2006年8月7日 22:35:47  青峰</font>
		</div>
<img src ="http://www.cnitblog.com/Qing-Feng/aggbug/14887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Qing-Feng/" target="_blank">【青峰小寨】</a> 2006-08-07 23:04 <a href="http://www.cnitblog.com/Qing-Feng/archive/2006/08/07/14887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>