<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>joerong666</title>
    <description></description>
    <link>http://joerong666.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>C++开发常用工具荟萃</title>
        <author>joerong666</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://joerong666.javaeye.com">joerong666</a>&nbsp;
          链接：<a href="http://joerong666.javaeye.com/blog/213188" style="color:red;">http://joerong666.javaeye.com/blog/213188</a>&nbsp;
          发表时间: 2008年07月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div id="entrytitle">
<h1>C++开发常用工具荟萃</h1>
<div id="entrymeta"><strong>时间</strong>:2006-09-21 11:50:58&nbsp;&nbsp;<strong>来源</strong>:<a href="http://www.csdn.net/" target="_blank">CSDN</a>&nbsp;&nbsp;<strong>作者</strong>:佚名</div>
</div>
<div id="entrybody"><span style="font-size: 9pt;"><strong>开发环境</strong> <br /><br />　　----＞Turbo c
<p>　　DOS时代c语言开发的经典工具，目前适合两类人使用：c语言beginner（尤其是学生一族），具有怀旧情节的专业人士：）</p>
<p>　　----＞Visual C++ 6.0/7.0</p>
<p>　　稳定而强大的IDE开发环境，具有丰富的调试功能，定制宏的功能也是其一大特色。Microsoft的经典之作，功能强大自不必言说。附带的一些工具也很不错，比如：Spy++。但编译器较之同类，支持c++标准的程度不够好，尤其6.0及以前的版本。</p>
<p>　　----＞BCB</p>
<p>　　Borland的C++ Builder是可以与VC匹敌的另一个功能强大的IDE，速度和稳定性稍逊，但对c++标准支持的程度较好。</p>
<p><br />　　----＞Cygwin</p>
<p>　　Windows平台下的C++编译器，基于gcc，又完全兼容Window特有的东西，比如对winsock的支持。从<span style="color: #4c408c;">http://www.cygwin.com</span>可以找到有关Cygwin的详细信息。</p>
<p>　　----＞Dev-c++</p>
<p>　　Windows平台下，一个类似VC、BCB的c++ IDE开发环境，属于共享软件。界面亲切优雅，size也不大，其4.9.x版有中文语言支持，无需汉化。编译器基于gcc，完全支持STL。但是对于规模较大的软件项目，恐怕难以胜任。可以从:http://www.bloodshed.net/dev/devcpp.html找到有关Dev-c++的有关信息。</p>
<p>　　----＞Source Insight</p>
<p>　　有着和Dev c++一样漂亮的界面，提供代码的编辑和察看功能，具有丰富的语法加亮功能，可以像VC一样自动弹出成员函数的提示，并具有快速方便的函数跳转功能（但是跳转速度似乎有点慢）。只是默认设置不适合时，需要仔细的调整和修改。无法查找经typedef之后的名字。</p>
<p>　　<strong>辅助工具</strong></p>
<p>　　----＞Visual Assist</p>
<p>　　VC IDE环境下的辅助编程工具，能识别各种关键字、函数、成员变量，自动给出tip，并自动更正大小写错误，标示拼写错误等。是VC开发的良好伴侣。 </p>
<p>　　----＞Understand for C++</p>
<p>　　一款c/c++IDE编程的辅助工具，支持反向工程，代码导向和一些统计功能，从<span style="color: #4c408c;">http://www.scitools.com</span>可以找到有关Understand for C++的详细信息。</p>
<p>　　<strong>程序编辑器</strong></p>
<p>　　----＞EditPlus</p>
<p>　　一款很不错的文本编辑软件，功能强大却又十分轻巧。支持不同语言的语法加亮，还有Project组织功能，具有丰富的自定义功能。通过设置User Tool，可以和其他语言编译器结合，形成一个简单的IDE。</p>
<p>　　----＞Ultra Edit</p>
<p>　　功能和EditPlus相当，通过脚本文件提供的配置功能可以定制编辑环境，但自6.0版以后一直没多大变化，就编程而言，自定义设置没有EditPlus方便。 </p>
<p>　　----＞EMACS</p>
<p>　　公认的世界上功能最多，最复杂的文本编辑器，其实也可以当作程序员用的编辑器。</p>
<p>　　----＞Visual Slick Edit</p>
<p>　　一个功能强大的程序员用编辑器。最值得一提的是其定制功能，很好用，可以和EMACS相比。自带了一套PCODE解释器，用c的语法，还可以挂接动态库。配合mingw一起使用很方便。从<span style="color: #4c408c;">http://www.slickedit.com</span>可以找到有关SlickEdit的详细信息。</p>
<p>　　----＞IQEdit</p>
<p>　　全功能的程序员用编辑器，界面很漂亮，从<span style="color: #4c408c;">http://pwksoftware.com</span>可以找到有关IQEdit的详细信息。</p>
<p>　　<strong>UML/建模</strong></p>
<p>　　----＞Rational Rose</p>
<p>　　强大的建模工具，早已&ldquo;家喻户晓&rdquo;，功过自然不必多加评说了。从<span style="color: #4c408c;">http://www.rationalsoftware.com.cn</span>可以找到有关Rational Rose的详细信息。</p>
<p>　　----＞Visual Modeler </p>
<p>MS Visual Studio 6.0所附的小工具。属于Rational和MicroSoft合作的战略产品，是Rose的简化版。<br />----＞Visio</p>
<p>　　Microsoft的建模工具，感觉更人性化一些，但功能没有Rose多、强、专，支持正向的代码生成，以及对代码的反向工程。</p>
<p>　　----＞Together</p>
<p>　　另一款功能强大的建模工具，用java编写而成，口碑不错，不过速度稍稍慢了一些。从<span style="color: #4c408c;">http://www.togethersoft.com</span>可以找到有关Togather的详细信息，另外，以下网址提供了一个有关Together的教程： 　　　<span style="color: #4c408c;">http://www.cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu</span></p>
<p><span style="color: #4c408c;"><span style="text-decoration: underline;">/together/TCCGuide6</span> </span></p>
<p>　　----＞Visual UML</p>
<p>　　支持多种语言类型，比如：VC、VB、DELPHI、CORBA IDL等，可以直接从UML设计图生成代码，简单易用，完全适合Personal use，界面也很清爽。从<span style="color: #4c408c;">http://www.visualObject.com</span>可以找到有关Visual UML的详细信息。</p>
<p>　　----＞SmartDraw</p>
<p>　　通用图表制作软件，可以用来制作组织机构图、流程图、统计图表等。随带有图库，基本满足制作各类图表的需要。从<span style="color: #4c408c;">http://www.smartdraw.com</span>可以找到有关SmartDraw的详细信息。</p>
<p>　　----＞PlayCase</p>
<p>　　国产面向对象的建模软件，兼容UML和IDEF，轻量级软件，只是界面看起来有点简朴，乃是高展先生用Delphi完成的。</p>
<p>　　<strong>版本控制</strong></p>
<p>　　----＞ClearCase</p>
<p>　　Rational的版本控制管理软件，功能强大，可以控制多种类型的文档，甚至包括Word、Excel、PowerPoint文档。但使用复杂，不易上手，且不是免费软件。</p>
<p>　　----＞CVS</p>
<p>　　为基于Web的分布式协同开发提供了版本控制管理手段，且是免费软件，可以通过脚本定制功能。但在权限控制方面功能相对较弱。</p>
<p>　　----＞VSS</p>
<p>　　微软的版本控制管理工具，功能相对简单，适合于小型团队开发，将其整合到微软的其他开发工具中，使用起来十分方便。</p>
<p>　　----＞SourceOffSite</p>
<p>　　微软为开发人员提供的远程访问VSS数据库的工具，使数据库得以远程更新，以支持远程办公。其他的版本管理工具还包括：PVCS、VCS、RCS等。</p>
<p>　　<strong>XML</strong></p>
<p>　　----＞expat</p>
<p>　　用于读取和处理XML文档的c函数库，最初是James Clark的个人作品，简单轻巧，且速度快。但支持的编码方式有限，最遗憾的是不支持中文。从<span style="color: #4c408c;">http://expat.sourceforge.net</span>可以找到有关expat的详细信息。</p>
<p>　　----＞xml4c</p>
<p>　　IBM的XML Parser，用c++语言写就，功能超级强大。号称支持多达100种字符编码，能够支持中文，适合于大规模的xml应用。若只是很小范围的应用，则非最佳选择，毕竟，你需要&ldquo;背负&rdquo;约12M左右的dll的沉重负担。从<span style="color: #4c408c;">http://www.alphaworks.ibm.com/tech/xml4c</span>可以找到有关xml4c的详细信息。 </p>
<p>　　----＞Xerces c++</p>
<p>　　Apache的XML项目，同样是c++实现，来源于IBM的xml4c，因此编程接口也是和xml4c一致的。但是目前只支持少数的字符编码，如ASCII，UTF-8，UTF-16等，不能处理包含中文字符的XML文档。从 <span style="color: #4c408c;">http://xml.apache.org/xerces-c</span>可以找到有关Xerces c++的详细信息。</p>
<p>　　<strong>测试</strong></p>
<p>　　----＞CppUnit</p>
<p>　　一个c++的单元测试框架，可以通过派生测试类的方式，定制具体的测试方案。xUnit家族的一员，从JUnit移植而来，JUnit是Java语言的单元测试框架。从<span style="color: #4c408c;">http://cppuint.sourceforge.net</span>可以找到有关CppUint的详细信息。</p>
<p>　　----＞Rational ROBOT</p>
<p>　　Rational的自动化测试工具，通过编写脚本的方式提供自动化测试特性。其GUI方式的脚本录制功能，有助于对GUI软件进行功能测试；其VU方式的脚本录制功能，有助于测试某些软件的数据通讯功能。</p>
<p>　　----＞Rational Purify</p>
<p>　　同样是Rational的自动化测试工具，不需要被测程序的源代码，可以用来检查内存访问错误、Windows API调用错误等，以完成软件的可靠性测试，属于白盒测试。</p>
<p>　　其他的Rational测试工具还包括：TestFactory、PureCoverage、TestManager等。 </p>
<p>　　<strong>日志</strong></p>
<p>　　----＞log4cpp</p>
<p>　　一个用于日志记录的c++函数库，可以将内容以定制的方式记录到不同的目的地，比如：文件、控制台syslog等，同时还可以通过控制记录级别来屏蔽掉某些无关记录。从<span style="color: #4c408c;">http://log4cpp.sourceforge.net</span>可以找到有关log4cpp的详细信息。</p>
<p>　　<strong>注释</strong></p>
<p>　　----＞Doc++</p>
<p>　　注释文档生成工具，根据源程序中的文档注释，可以输出TeX和HTML格式的文档。除了支持c/c++语言外，还支持IDL和java。仅提供命令行使用方式。从<span style="color: #4c408c;">http://docpp.sourceforge.net</span>可以找到有关Doc++的详细信息。</p>
<p>　　----＞Doxygen</p>
<p>　　注释文档生成工具，较之Doc++功能更为齐全，可以生成包括HTML、PDF、RTF在内的多种格式的文档，并有GUI界面，除了支持c/c++语言外，还支持IDL、java、PHP、c#等。从<span style="color: #4c408c;">http://www.stack.nl/~dimitri/doxygen</span>可以找到有关Doxygen的详细信息。</p>
</span><!--
<div  style="overflow:hidden;">
</div>
--></div>
          <br/>
          <span style="color:red;">
            <a href="http://joerong666.javaeye.com/blog/213188#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Jul 2008 17:40:04 +0800</pubDate>
        <link>http://joerong666.javaeye.com/blog/213188</link>
        <guid>http://joerong666.javaeye.com/blog/213188</guid>
      </item>
      <item>
        <title>HTML各个元素对搜索引擎的权重比例</title>
        <author>joerong666</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://joerong666.javaeye.com">joerong666</a>&nbsp;
          链接：<a href="http://joerong666.javaeye.com/blog/213048" style="color:red;">http://joerong666.javaeye.com/blog/213048</a>&nbsp;
          发表时间: 2008年07月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1 class="ArticleTitle">HTML各个元素对搜索引擎的权重比例</h1>
<div id="entrymeta"><strong>来源</strong>：<a href="http://www.136z.com/" target="_blank">本站整理</a> <strong>作者</strong>：佚名 <strong>时间</strong>：2007-9-22 9:44:09 <strong>该文得分</strong>：<a href="http://joerong666.javaeye.com/admin/blogs/#comments" title="在此之前共有0个网友顶过此文，我也来顶下！"><span style="color: #ff0000;">0</span></a><strong id="votecount" style="display: none;">0</strong></div>
<div class="NewsContent" id="NewsContentLabel">　　<strong>以下信息仅供参考：</strong><br /><br /><img class="UBBWordLink" src="http://joerong666.javaeye.com/UploadPic/2007-9/20079229449433.gif" alt="div css xhtml &lt;a target=" style="margin: 0px 2px -3px 0px;" />xml Example Source Code" onload="return imgzoom(this,550);" onclick="javascript:window.open(this.src);" style="cursor: pointer;"/&gt; Example Source Code <span style="font-weight: 100; color: #f7f7f7;">[www.136z.com]</span>　　内部链接文字：10分<br />　　标题title：10分<br />　　域名：7分<br />　　H1,H2字号标题：5分<br />　　每段首句：5分<br />　　路径或文件名：4分<br />　　相似度（关键词堆积）：4分<br />　　每句开头：1.5分<br />　　加粗或斜体：1分<br />　　文本用法(内容)：1分<br />　　title属性：1分&nbsp;(注意不是title&gt;,&nbsp;是title属性,&nbsp;比如a&nbsp;href=&hellip;&nbsp;title=&rdquo;)<br />　　alt标记：0.5分<br />　　Meta描述（Description属性）：0.5分<br />　　Meta关键词（Keywords属性）：0.05分<br />　　<strong>1、&nbsp;静态页面</strong><br />　　将信息页面和频道、<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>首页改为静态页面，有利于搜索引擎更快更好的收录。<br />　　<strong>2、&nbsp;页面标题(Page&nbsp;Title)的关键词优化</strong><br />　　必须列出信息的标题、<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>的名称以及相关关键字。<br />　　<strong>3、&nbsp;Meta标签的优化</strong>（过去搜索引擎优化的重要手法，现在已经不是关键因素，但仍不可忽略）<br />　　主要包括：Meta&nbsp;description、Meta&nbsp;keywords的设置<br />　　关键字密度要适度，通常为2%-8%，也就是说你的关键字必须在页面中出现若干次，或者在搜索引擎允许的范围内，要避免堆砌关键字。<br />　　<strong>4、&nbsp;针对Google制作Sitemaps</strong><br />　　Google的sitemaps是对原来robots.txt的扩展，它使用<a href="http://edu.136z.com/developer/list_163_1.html" class="UBBWordLink" target="_blank">XML</a>格式来记录整个<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>的信息并供Google读取，使搜索引擎能更快更全面的收录<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>的内容。<br />　　可以使用Google提供的Sitemap生成器制作（需要技术人员制作）：&nbsp;<br />　　https://www.google.com/webmasters/sitemaps/docs/zh_CN/sitemap-generator.html<br />　　也可以由技术部人员制作更全面的Sitemaps。<br />　　<strong>5、&nbsp;图片的关键词优化&nbsp;</strong><br />　　图片的替代关键词也不要忽略，其另外一方面的作用是，当图片不能显示的时候，可以给访问者一个替代解释语句。<br />　　<strong>6、&nbsp;避免表格的嵌套</strong><br />　　目前本站的表格嵌套太多，搜索引擎通常只读取3个＜table&gt;的嵌套，如果太多，会造成部分有用信息没有被检测到。<br />　　<strong>7、&nbsp;采用web标准进行<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>重构</strong><br />　　尽量使<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>的代码符合W3C的HTML&nbsp;4.0或XHTML&nbsp;1.0规范。通过<a href="http://edu.136z.com/developer/list_163_1.html" class="UBBWordLink" target="_blank">XML</a>＋CSS技术进行<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>重构，减少不表格及冗余代码，提高<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>页面的扩展性，兼容性，可以使更多浏览器支持。<br />　　<strong>8、&nbsp;<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>结构的扁平化规划</strong><br />　　目录和内容结构最好不要超过3层，如果有超过三层的，最好通过子域名来调整和简化结构层数。另外目录命名的规范做法是使用英文而不是拼音字母<br />　　<strong>9、&nbsp;页面容量的合理化</strong><br />　　合理的页面容量会提升<a href="http://edu.136z.com/Web/list_151_1.html" class="UBBWordLink" target="_blank">网页</a>的显示速度，增加对搜索引擎蜘蛛<a href="http://down.136z.com/" class="UBBWordLink" target="_blank">程序</a>的友好度。同时建议js脚本和css脚本尽量用链接文件<br />　　<strong>10、外部文件策略</strong><br />　　把javascript文件和css文件分别放在js和css外部文件中。这样做的好处是把重要的页面内容放到页面顶部，同时能缩小文件大小。有利于搜索引擎快速准确地抓取页面<br />　　重要内容。其他的<a href="http://font.136z.com/" class="UBBWordLink" target="_blank">字体</a>（FONT）和格式化标签也尽量少用，建议采用CSS定义。<br />　　<strong>11、外部链接</strong><br />　　尽可能多地让其他跟你主题相关的<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>链接本站，同时尽量同PR值更高的<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>进行相互链接。如果<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>提供与主题相关的导出链接，被搜索引擎认为有丰富的与主题相关的内容，也有利于排名，例如各类招商<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>、投融资<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>的概念。另外避免链接不顾质量的大面积撒网，对搜索引擎而言宁少要精。<br />　　<strong>12、<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>地图</strong><br />　　<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>自身的<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>地图是搜索引擎更全面索引收录你的<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>的重要因素。建议制作&nbsp;基于文本的<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>地图，内含<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>所有栏目、子栏目。<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>地图的三大因素：文本、链接、&nbsp;关键词，都极其有利于搜索引擎抓取主要页面内容。特别是动态生成目录<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>尤其需要&nbsp;创建<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>地图。<br />　　<strong>13、图像热点</strong><br />　　除AltaVista、Google明确支持图像热点链接外，其他引擎暂不支持。当&ldquo;蜘蛛&rdquo;&nbsp;<a href="http://down.136z.com/" class="UBBWordLink" target="_blank">程序</a>遇到这种结构时，就会无法辨别。因此尽量不要设置图像热点(Image&nbsp;Map)链接。<br />　　<strong>14、<a href="http://edu.136z.com/Photo/list_179_1.html" class="UBBWordLink" target="_blank">FLASH</a>应用</strong><br />　　<a href="http://edu.136z.com/Photo/list_179_1.html" class="UBBWordLink" target="_blank">FLASH</a>由于不含文字信息，应尽量用于功能展示和广告，少用于<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>栏目和页面。<br />　　<strong>15、JS脚本</strong><br />　　在不支持JS脚步的浏览器里&nbsp;NOSCRIPT&gt;&nbsp;标签会起到重要提示作用，对搜索引擎的Spider搜索也会有帮助。<br />　　<strong>16、Frame框架</strong><br />　　Frame标签会被搜索忽略，尽量少用，如果一定要用，则应正确使用Noframe标签，&nbsp;在Noframe&gt;/Noframe&gt;区域中包含指向frame页的链接或带有关键词的描述文本，同&nbsp;时在框架以外的区域也出现关键词文本。<br />　　<strong>17、资讯的内部链接</strong><br />　　有助提高<a href="http://www.136z.com/" class="UBBWordLink" target="_blank">网站</a>排名和PR值，例如相关资讯、推荐资讯等。&nbsp;</div>
          <br/>
          <span style="color:red;">
            <a href="http://joerong666.javaeye.com/blog/213048#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Jul 2008 13:10:29 +0800</pubDate>
        <link>http://joerong666.javaeye.com/blog/213048</link>
        <guid>http://joerong666.javaeye.com/blog/213048</guid>
      </item>
      <item>
        <title>在Sql Server触发器中判断操作是Insert还是Update还是Delete</title>
        <author>joerong666</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://joerong666.javaeye.com">joerong666</a>&nbsp;
          链接：<a href="http://joerong666.javaeye.com/blog/212658" style="color:red;">http://joerong666.javaeye.com/blog/212658</a>&nbsp;
          发表时间: 2008年07月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">@IsInsert</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #000000;">bit</span><span style="color: #000000;">,<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">@IsUpdate</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #000000;">bit</span><span style="color: #000000;">,<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">@IsDelete</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #000000;">bit</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff;">IF</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">EXISTS</span><span style="color: #000000;">(</span><span style="color: #0000ff;">SELECT</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;inserted)&nbsp;</span><span style="color: #808080;">AND</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">NOT</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">EXISTS</span><span style="color: #000000;">(</span><span style="color: #0000ff;">SELECT</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;deleted)<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">@IsInsert</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff;">ELSE</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">@IsInsert</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">0</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff;">IF</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">EXISTS</span><span style="color: #000000;">(</span><span style="color: #0000ff;">SELECT</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;inserted)&nbsp;</span><span style="color: #808080;">AND</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">EXISTS</span><span style="color: #000000;">(</span><span style="color: #0000ff;">SELECT</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;deleted)<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">@IsUpdate</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff;">ELSE</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">@IsUpdate</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">0</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff;">IF</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">NOT</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">EXISTS</span><span style="color: #000000;">(</span><span style="color: #0000ff;">SELECT</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;inserted)&nbsp;</span><span style="color: #808080;">AND</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">EXISTS</span><span style="color: #000000;">(</span><span style="color: #0000ff;">SELECT</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;deleted)<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">@IsDelete</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff;">ELSE</span><span style="color: #000000;"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">@IsDelete</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="font-weight: bold; color: #800000;">0</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://joerong666.javaeye.com/blog/212658#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 08 Jul 2008 11:20:25 +0800</pubDate>
        <link>http://joerong666.javaeye.com/blog/212658</link>
        <guid>http://joerong666.javaeye.com/blog/212658</guid>
      </item>
      <item>
        <title>css教程–十步学会用css建站(全)</title>
        <author>joerong666</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://joerong666.javaeye.com">joerong666</a>&nbsp;
          链接：<a href="http://joerong666.javaeye.com/blog/211007" style="color:red;">http://joerong666.javaeye.com/blog/211007</a>&nbsp;
          发表时间: 2008年07月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="blog_title">
<h3><a href="http://joerong666.javaeye.com/blog/173710"><span style="color: #000000;">css教程&ndash;十步学会用css建站(全)</span></a></h3>
<strong>关键字: css教程 &ndash; 十步学会用 css建站 (全)</strong> </div>
<div class="blog_content">
<p>本教程主要参考<a href="http://www.subcide.com/tutorials/csslayout/"><span style="color: #000000;">Creating a CSS Layout from scratch</span></a>，由Jorux翻译，以意译为主，其间加入了不少Jorux的个人观点，省略了一些多余的说明，请读者明鉴。 </p>
<p><strong>目录：</strong> </p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c1"><span style="color: #000000;">第一步：规划网站，本教程将以图示为例构建网站；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c2"><span style="color: #000000;">第二步：创建html模板及文件目录等；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c3"><span style="color: #000000;">第三步：将网站分为五个div，网页基本布局的基础；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c4"><span style="color: #000000;">第四步：网页布局与div浮动等；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c5"><span style="color: #000000;">第五步：网页主要框架之外的附加结构的布局与表现；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#6"><span style="color: #000000;">第六步：页面内的基本文本的样式(css)设置；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c7"><span style="color: #000000;">第七步：网站头部图标与logo部分的设计；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c8"><span style="color: #000000;">第八步：页脚信息(版权等)的表现设置；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c9"><span style="color: #000000;">第九步：导航条的制作(较难)；</span></a></p>
<p><a href="http://jorux.com/archives/10steps-built-web-with-css/#c10"><span style="color: #000000;">第十步：解决IE浏览器的显示BUG；</span></a></p>
<p id="c1"><strong>第一步：规划网站，本教程将以图示为例构建网站</strong> </p>
<p>1.规划网站，本教程将以下图为例构建网站。 </p>
<p align="center"><a href="http://static.flickr.com/122/263487282_5c400053cd_o.jpg" target="_blank"><img class="body_img" src="http://static.flickr.com/122/263487282_5c400053cd_m.jpg" border="0" height="120" alt="divlayout" width="140" /></a></p>
<p>点击看大图 </p>
<p>其基本布局见下图： </p>
<p align="center"><a href="http://static.flickr.com/113/263494491_497bf9e42f_o.jpg" target="_blank"><img class="body_img" src="http://static.flickr.com/113/263494491_497bf9e42f_m.jpg" border="0" height="120" alt="divlayout" width="140" /></a></p>
<p>点击看大图 </p>
<p>主要由五个部分构成： </p>
<p><strong>1.Main Navigation</strong> 导航条，具有按钮特效。 Width: 760px Height: 50px </p>
<p><strong>2.Header</strong> 网站头部图标，包含网站的logo和站名。 Width: 760px Height: 150px </p>
<p><strong>3.Content</strong> 网站的主要内容。 Width: 480px Height: Changes depending on content </p>
<p><strong>4.Sidebar</strong> 边框，一些附加信息。 Width: 280px Height: Changes depending on </p>
<p><strong>5.Footer</strong> 网站底栏，包含版权信息等。 Width: 760px Height: 66px </p>
<p id="c2"><strong>第二步：创建html模板及文件目录等</strong> 1.创建html模板。代码如下：</p>
<p class="script">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-type" content="text/html; charset=UTF-8" /&gt;<br />&lt;title&gt;CompanyName - PageName&lt;/title&gt;<br />&lt;meta http-equiv="Content-Language" content="en-us" /&gt; <br />&lt;meta http-equiv="imagetoolbar" content="no" /&gt;<br />&lt;meta name="MSSmartTagsPreventParsing" content="true" /&gt; <br />&lt;meta name="description" content="Description" /&gt;<br />&lt;meta name="keywords" content="Keywords" /&gt; <br />&lt;meta name="author" content="Enlighten Designs" /&gt;<br />&lt;style type="text/css" media="all"&gt;@import "css/master.css";&lt;/style&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
<p>将其保存为index.html,并创建文件夹css，images，网站结构如下：</p>
<p><img src="http://static.flickr.com/105/263494623_6be1d2a6f2_m.jpg" border="0" height="60" alt="layout" width="88" /></p>
<p>2.创建网站的大框，即建立一个宽760px的盒子，它将包含网站的所有元素。<br />在html文件的&lt;body&gt;和&lt;/body&gt;之间写入</p>
<p class="script">&lt;div id="page-container"&gt;<br />Hello world.<br />&lt;/div&gt;</p>
<p>创建css文件，命名为master.css,保存在/css/文件夹下。写入：</p>
<p class="script">#page-container {<br />width: 760px;<br />background: red;<br />}</p>
<p>控制html的id为page-container的盒子的宽为760px，背景为红色。表现如下：<br /><a href="http://static.flickr.com/27/263494840_7e996e50a9_o.gif"><img src="http://static.flickr.com/27/263494840_7e996e50a9.jpg" border="0" alt="layout" style="width: 600px;" /></a><br />现在为了让盒子居中，写入margin: auto;，使css文件为：</p>
<p class="script">#page-container {<br />width: 760px;<br />margin: auto;<br />background: red;<br />}</p>
<p>现在你可以看到盒子和浏览器的顶端有8px宽的空隙。这是由于浏览器的默认的填充和边界造成的。消除这个空隙，就需要在css文件中写入：</p>
<p class="script">html, body {<br />margin: 0;<br />padding: 0;<br />}</p>
<p id="c3"><strong>第三步：将网站分为五个div，网页基本布局的基础:</strong></p>
<p class="script">&nbsp;</p>
<p>1.将&ldquo;第一步&rdquo;提到的五个部分都放入盒子中，在html文件中写入：</p>
<p class="script">&lt;div id="page-container"&gt;<br />&lt;div id="main-nav"&gt;Main Nav&lt;/div&gt; <br />&lt;div id="header"&gt;Header&lt;/div&gt; <br />&lt;div id="sidebar-a"&gt;Sidebar A&lt;/div&gt; <br />&lt;div id="content"&gt;Content&lt;/div&gt; <br />&lt;div id="footer"&gt;Footer&lt;/div&gt;<br />&lt;/div&gt;</p>
<p>表现如下：<br /><a href="http://static.flickr.com/99/263506567_b11257233b_o.gif"><img src="http://static.flickr.com/99/263506567_b11257233b.jpg" border="0" alt="lay" style="width: 600px;" /></a><br />2.为了将五个部分区分开来，我们将这五个部分用不同的背景颜色标示出来，在css文件写入：</p>
<p class="script">#main-nav {<br />background: red;<br />height: 50px;<br />}<br />#header {<br />background: blue;<br />height: 150px;<br />}<br />#sidebar-a {<br />background: darkgreen;<br />}<br />#content {<br />background: green;<br />}<br />#footer {<br />background: orange;<br />height: 66px;<br />}</p>
<p>表现如下：<br /><a href="http://static.flickr.com/121/263507866_41e474975d_o.gif"><img src="http://static.flickr.com/121/263507866_41e474975d.jpg" border="0" alt="lay" style="width: 600px;" /></a></p>
<p id="c4" style="font-weight: bold;">第四步：网页布局与div浮动等：</p>
<p>1.浮动，首先让边框浮动到主要内容的右边。用css控制浮动:</p>
<p class="script">#sidebar-a {<br />float: right;<br />width: 280px;<br />background: darkgreen;<br />}</p>
<p>表现如下：<br /><a href="http://static.flickr.com/102/263508120_fa4fd34369_o.gif"><img src="http://static.flickr.com/102/263508120_fa4fd34369.jpg" border="0" alt="lay" style="width: 600px;" /></a></p>
<p>2.往主要内容的盒子中写入一些文字。在html文件中写入：</p>
<p class="script">&lt;div id="content"&gt;<br />Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam gravida enim ut risus. <br />Praesent sapien purus, ultrices a, varius ac, suscipit ut, enim. Maecenas in lectus.<br />Donec in sapien in nibh rutrum gravida. Sed ut mauris. Fusce malesuada enim vitae lacus <br />euismod vulputate. Nullam rhoncus mauris ac metus. Maecenas vulputate aliquam odio. <br />Duis scelerisque justo a pede. Nam augue lorem, semper at, porta eget, placerat eget, <br />purus. Suspendisse mattis nunc vestibulum ligula. In hac habitasse platea dictumst.<br />&lt;/div&gt;</p>
<p>表现如下：<br /><a href="http://static.flickr.com/89/263508325_eef5f40b2f_o.gif"><img src="http://static.flickr.com/89/263508325_eef5f40b2f.jpg" border="0" alt="lay" style="width: 600px;" /></a><br />但是你可以看到主要内容的盒子占据了整个page-container的宽度，我们需要将#content的右边界设为280px。以使其不和边框发生冲突。<br />css代码如下：</p>
<p class="script">#content {<br />margin-right: 280px;<br />background: green;<br />}</p>
<p>同时往边框里写入一些文字。在html文件中写入：</p>
<p class="script">&lt;div id="sidebar-a"&gt;<br />Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam gravida enim ut risus. <br />Praesent sapien purus, ultrices a, varius ac, suscipit ut, enim. Maecenas in lectus. <br />Donec in sapien in nibh rutrum gravida. Sed ut mauris. Fusce malesuada enim vitae lacus <br />euismod vulputate. Nullam rhoncus mauris ac metus. Maecenas vulputate aliquam odio. <br />Duis scelerisque justo a pede. Nam augue lorem, semper at, porta eget, placerat eget, <br />purus. Suspendisse mattis nunc vestibulum ligula. In hac habitasse platea dictumst.<br />&lt;/div&gt;</p>
<p>表现如下：<br /><a href="http://static.flickr.com/108/263508507_f7282631ed_o.gif"><img src="http://static.flickr.com/108/263508507_f7282631ed.jpg" border="0" alt="lay" style="width: 600px;" /></a><br />这也不是我们想要的，网站的底框跑到边框的下边去了。这是由于我们将边框向右浮动，由于是浮动，所以可以理解为它位于整个盒子之上的另一层。因此，底框和内容盒子对齐了。<br />因此我们往css中写入：</p>
<p class="script">#footer {<br />clear: both;<br />background: orange;<br />height: 66px;<br />}</p>
<p>表现如下：<br /><a href="http://static.flickr.com/118/263508621_5eefd6b3ff_o.gif"><img src="http://static.flickr.com/118/263508621_5eefd6b3ff.jpg" border="0" alt="lay" style="width: 600px;" /></a> </p>
<p id="c5" style="font-weight: bold;">第五步：网页主要框架之外的附加结构的布局与表现：</p>
<p>第五步主要介绍除网页主要框架之外的附加结构的表现(Layout),包括以下内容:<br />1.主导航条；<br />2.标题(heading),包括网站名和内容标题；<br />3.内容；<br />4.页脚信息,包括版权,认证,副导航条(可选)。</p>
<p>加入这些结构时，为了不破坏原有框架，我们需要在css文件"body"标签(TAG)下加入:</p>
<p class="script">.hidden {<br />display: none;<br />}</p>
<p>".hidden"即我们加入的类(class),这个类可以使页面上任意属于hidden类的元素(element)不显示。这些会在稍后使用，现在请暂时忘记它。</p>
<p><strong>现在我们加入标题(heading):</strong><br />先回到HTML的代码，&lt;h1&gt;到&lt; h6&gt;是我们常用的html标题代码。比如我们一般用&lt;h1&gt;网站名&lt;/h1&gt;，&lt;h2&gt;网站副标题&lt; /h2&gt;,&lt;h3&gt;内容主标题&lt;/h3&gt;等。我们往html文件的Header层(Div)加入:</p>
<p class="script">&lt;div id="header"&gt;<br /><span style="color: red;">&lt;h1&gt;Enlighten Designs&lt;/h1&gt;</span><br />&lt;/div&gt;</p>
<p>刷新一下页面，你就可以看到巨大的标题，和标题周围的空白，这是因为&lt;h1&gt;&gt;标签的默认大小和边距(margin)造成的，先要消除这些空白,需要加入：</p>
<p class="script">h1 {<br />margin: 0;<br />padding: 0;<br />}</p>
<p><strong>接下来是导航条</strong>：<br />控制导航条表现的css代码相对比较复杂，我们将在第九步或是第十步中详细介绍。现在html文件加入导航代码：</p>
<p class="script">&lt;div id="main-nav"&gt;<br />&lt;ul&gt;<br />&lt;li id="about"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;About&lt;/a&gt;&lt;/li&gt;<br />&lt;li id="services"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Services&lt;/a&gt;&lt;/li&gt;<br />&lt;li id="portfolio"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Portfolio&lt;/a&gt;&lt;/li&gt;<br />&lt;li id="contact"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Contact Us&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/div&gt;</p>
<p>(注：原教程使用了dl和dt，jorux在这使用了更常用的ul和li标签)<br />目前导航条的表现比较糟糕，但是要在以后的教程中介绍其特殊表现，故需要暂时隐藏导航条,于是加入：</p>
<p class="script">&lt;div id="main-nav"&gt;<br /><span style="color: red;">&lt;dl class="hidden"&gt;</span><br />&lt;dt id="about"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;About&lt;/a&gt;&lt;/dt&gt;<br />&lt;dt id="services"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Services&lt;/a&gt;&lt;/dt&gt;<br />&lt;dt id="portfolio"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Portfolio&lt;/a&gt;&lt;/dt&gt;<br />&lt;dt id="contact"&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Contact Us&lt;/a&gt;&lt;/dt&gt;<br />&lt;/dl&gt;<br />&lt;/div&gt;</p>
<p><strong>我们跳一步，先到页脚：</strong><br />页脚包括两部分：左边的版权,认证和右边的副导航条。<br />我们先要让副导航条向右浮动，就像之前处理Sidebar和Content关系的一样，需要加入一个新的层(div):</p>
<p class="script">&lt;div id="footer"&gt;<br /><span style="color: red;">&lt;div id="altnav"&gt;<br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;About&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Services&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Portfolio&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Contact Us&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Terms of Trade&lt;/a&gt;<br />&lt;/div&gt;</span><br />&lt;/div&gt;</p>
<p>理论上，我们可以控制源文件上的任意元素的浮动，但由于IE浏览器的BUG，被浮动层需要首先出现在源文件上，也就是说我们把副标题放在版权和认证的前面：</p>
<p class="script">&lt;div id="footer"&gt;<br />&lt;div id="altnav"&gt;<br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;About&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Services&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Portfolio&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Contact Us&lt;/a&gt; - <br />&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;Terms of Trade&lt;/a&gt;<br />&lt;/div&gt;<br /><span style="color: red;">Copyright &amp;copy; Enlighten Designs<br />Powered by &lt;a href="http://www.enlightenhosting.com/" &gt;Enlighten Hosting&lt;/a&gt; and<br />&lt;a href="http://www.vadmin.co.nz/" &gt;Vadmin 3.0 CMS&lt;/a&gt;</span>&lt;/div&gt;</p>
<p>刷新你的页面，你将看到如下所示(点击看大图)：<br /><a href="http://static.flickr.com/44/138223872_39051e9a1f_o.gif"><img src="http://static.flickr.com/44/138223872_39051e9a1f_m.jpg" border="0" alt="lay" /></a></p>
<p><strong>最后我们回到内容部分：</strong>用&lt;h2&lt;&gt;表现内容标题&ndash;"About","Contact us"；用&lt;p&gt;表现段落；用&lt;/br&gt;断行。</p>
<p class="script">&lt;div id="content"&gt;<br /><span style="color: red;">&lt;h2&gt;About&lt;/h2&gt;<br />&lt;p&gt;&lt;strong&gt;Enlighten Designs&lt;/strong&gt; is an Internet solutions provider that specialises in <br />front and back end development. To view some of the web sites we have created view our <br />portfolio.&lt;/p&gt;<br />&lt;p&gt;We are currently undergoing a 'face lift', so if you have any questions or would <br />like more information about the services we provide please feel free to contact us.&lt;/p&gt;<br />&lt;h2&gt;Contact Us&lt;/h2&gt;<br />&lt;p&gt;Phone: (07) 853 6060&lt;br /&gt;<br />Fax: (07) 853 6060&lt;br /&gt;<br />Email: &lt;a href="mailto:info@enlighten.co.nz" &gt;info@enlighten.co.nz&lt;/a&gt;&lt;br /&gt;<br />P.O Box: 14159, Hamilton, New Zealand&lt;/p&gt;<br />&lt;p&gt;&lt;a href="http://css.jorux.com/wp-admin/post.php#" &gt;More contact information&hellip;&lt;/a&gt;&lt;/p&gt;</span><br />&lt;/div&gt;</p>
<p>刷新页面可以看到在Content层中又出现一些空白，这是由于&lt;h2&gt;&lt;p&gt;标签的默认边距(margin)造成的，我们必须消除这些恼人的空白，当又不想把网页中所有的&lt;h2&gt;&lt;p&gt;标签地边距都设为0，这就需要使用css的子选择器 ("child css selector"),在html的文件结构中，我们想控制的&lt;h2&gt;&lt;p&gt;标签(<span style="color: red;">child</span>)是属于#content层(<span style="color: red;">parent</span>)的,因此在css文件中写入：</p>
<p class="script">#content h2 {<br />margin: 0;<br />padding: 0;<br />}<br />#content p {<br />margin: 0;<br />padding: 0;<br />}</p>
<p>这样我们就告诉浏览器，仅仅是隶属于content层的&lt;h2&gt;&lt;p&gt;标签的margin和padding的值为0！</p>
<p id="c6" style="font-weight: bold;">第六步：页面内的基本文本的样式(css)设置：</p>
<p>你是不是厌倦了那些大红大绿的背景，现在是去掉它们的时候了，只保留导航条的红色背景。真是难为您居然能坚持学习本教程到此，很好，再过几步，你就能很好了解css控制整个网页版面(Layout)的能力。<br />&ndash;言归正传&ndash;<br />先设置全局的文本样式：</p>
<p class="script">body {<br />font-family: Arial, Helvetica, Verdana, Sans-serif;<br />font-size: 12px;<br />color: #666666;<br />background: #ffffff;<br />}</p>
<p>一般我们把body标签放在css文件的顶端，当然你要是执意要把它放在尾部，浏览器不会和你计较。font-family内的顺序决定字体显示优先级，比方如果所在计算机没有Arial字体，浏览器就会指向Helvetica字体，依次类推；color指字体颜色；background指背景颜色。<br />如果你都是按本教程的操作，应该能看到下图(点击看大图)：<br /><a href="http://static.flickr.com/50/138230223_d90ae92488_o.gif"><img src="http://static.flickr.com/50/138230223_d90ae92488_m.jpg" border="0" alt="lay" /></a><br />你可以看到内容(content)的各块(block)之间的间隙太小了，而基于最初的设计，内容标题(即&lt;h2&gt;)和正文之间的间隙大概是15px，每个段落的间距也大概是15px，所以在css中写入：</p>
<p class="script">#content h2 {<br />margin: 0;<br />padding: 0;<br /><span style="color: red;">padding-bottom: 15px;</span><br />}<br />#content p {<br />margin: 0;<br />padding: 0;<br /><span style="color: red;">padding-bottom: 15px;</span><br />}</p>
<p>然后需要让content层的四周都空出25px的间隙，这本来是件很简单的事，理论上我们只需在#content的css文件中加入 padding: 25px;就行了，但是IE给我们上了"一课",它的固有BUG根本不能按我们的想象表现。解决这个问题有两种办法。第一种办法是区别浏览器写入两种代码 (HACK IE),但因为间隙(padding,在Dreamweaver中又叫填充)使用很频繁，所以我们用另一种办法。<br />我们往需要填充的层中加入padding层，它的功能仅限于显示间隙：</p>
<p class="script">&lt;div id="sidebar-a"&gt;<br /><span style="color: red;">&lt;div class="padding"&gt;</span><br />Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam gravida enim ut risus. <br />Praesent sapien purus, ultrices a, varius ac, suscipit ut, enim. Maecenas in lectus. <br />Donec in sapien in nibh rutrum gravida. Sed ut mauris. Fusce malesuada enim vitae lacus <br />euismod vulputate. Nullam rhoncus mauris ac metus. Maecenas vulputate aliquam odio. <br />Duis scelerisque justo a pede. Nam augue lorem, semper at, porta eget, placerat eget, <br />purus. Suspendisse mattis nunc vestibulum ligula. In hac habitasse platea dictumst.<br /><span style="color: red;">&lt;/div&gt;</span><br />&lt;/div&gt;</p>
<p>同样的，再往html文件的content层中加入padding层。<br />由于padding层的功能仅是制造空隙，所以不要设置它的宽度，只需在css中添加:</p>
<p class="script">#sidebar-a {<br />float: right;<br />width: 280px;<br />}<br />#sidebar-a .padding {<br />padding: 25px;<br />}<br />#content {<br />margin-right: 280px;<br />}<br /><span style="color: red;">#content .padding {<br />padding: 25px;<br />}</span></p>
<p>就像我们之前用的方法一样，我们只选择了类(class)为padding，且父类(parent)为#content或#sidebar-a的元素(element)。<br />接下来设置行距，content和sidebar-a的行距需要加宽，但在css中是没有行距(leading)这种属性(attribute)的，但是有行高(line-height)属性，因此往css中写入：</p>
<p class="script">#sidebar-a {<br />float: right;<br />width: 280px;<br /><span style="color: red;">line-height: 18px;</span><br />}<br />#content {<br />margin-right: 280px;<br /><span style="color: red;">line-height: 18px;</span><br />}</p>
<p>现在可以看到标题"about"和"contact us"显得相当突兀，这是因为我们使用的字体并不是一种网页字体，我们需要将其替换为以下图片，并将其存放于/images/headings/文件夹中：</p>
<p><img src="http://www.subcide.com/tutorials/csslayout/images/headings/about.gif" border="0" height="14" alt="lay" style="border-width: 0pt; padding: 0px;" width="54" /></p>
<p><img src="http://www.subcide.com/tutorials/csslayout/images/headings/contact.gif" border="0" height="14" alt="lay" style="border-width: 0pt; padding: 0px;" width="98" /></p>
<p>替换方法为，在html文件的&lt;h2&gt;标签中写入：</p>
<p class="script">&lt;h2&gt;<span style="color: red;">&lt;img src="images/headings/about.gif" width="54" height="14" alt="About" /&gt;</span>&lt;/h2&gt;<br />&lt;h2&gt; <span style="color: red;">&lt;img src="images/headings/contact.gif" width="98" height="14" alt="Contact Us" /&gt;</span> &lt;/h2&gt;</p>
<p>于是得到下图(点击看大图)：<br /><a href="http://static.flickr.com/47/138232030_9f2aa6f1f7_o.gif"><img src="http://static.flickr.com/47/138232030_9f2aa6f1f7_m.jpg" border="0" alt="lay" /></a></p>
<p id="c7" style="font-weight: bold;">第七步：网站头部图标与logo部分的设计：</p>
<p>为实现设计时的网页头部效果，我们需要以下两幅图：<br />/images/headers/about.jpg (点击看大图)<br /><a href="http://static.flickr.com/44/138281815_836e050bb3_o.jpg"><img src="http://static.flickr.com/44/138281815_836e050bb3_m.jpg" border="0" alt="lay" /></a></p>
<p>/images/general/logo_enlighten.gif (点击看大图)<br /><a href="http://static.flickr.com/51/138988144_e2c7b19c96_o.gif"><img src="http://static.flickr.com/51/138988144_e2c7b19c96_m.jpg" border="0" alt="lay" /></a></p>
<p>首先我们给#header层添加背景图案：</p>
<p class="script">#header {<br />height: 150px;<br />background: #db6d16<br /><span style="color: red;">url(../images/headers/about.jpg);</span><br />}</p>
<p>我们使用的背景属性为一些简写的属性名，用其能规定背景的颜色，图案，图案的位置，是否重复以及如何重复。之所以把背景色设为桔黄色，是因为当用户使浏览器屏蔽图片时，网站的头部不会变的一片空白。应该注意到图片的路径是相对于css的存放位置而言的，而不是html文件，因此有"../"。</p>
<p>接着替换掉&lt;h1&gt;&lt;/h1&gt;标签里的"Enlighten Designs":</p>
<p class="script">&lt;div id="header"&gt;<br />&lt;h1&gt;<span style="color: red;">&lt;img src="images/general/logo_enlighten.gif" <br />width="236" height="36" alt="Enlighten Designs" border="0" /&gt;</span>&lt;/h1&gt;<br />&lt;/div&gt;</p>
<p>logo_enlighten图片浮在头部的左上方，我们需要设置&lt;h1&gt;的属性值为：</p>
<p class="script">h1 {<br />margin: 0;<br />padding: 0;<br />float: right;<br />margin-top: 57px;<br />padding-right: 31px;<br />}</p>
<p>这样我们使存在于&lt;h1&gt;层的图片向右浮动，并且上边距(margin-top)为57px，右间隙(padding-right)为31px，如下图所示(点击看大图)：<br /><a href="http://static.flickr.com/56/138999036_fc9ace8e58_o.jpg"><img src="http://static.flickr.com/56/138999036_fc9ace8e58_m.jpg" border="0" alt="lay" /></a></p>
<p>注意：细心的你可能会发现我们使用了padding-right而不是margin-right，这是因为IE的怪毛病不少，它会在不定的地方无法正确显示margin-right/left属性，所以使用了padding(间隙,Dreamweaver中又被称为填充)属性。</p>
<p><span style="color: red;">Jorux提示</span>：希望大家在以后的css编写过程中，尽量使用padding属性，以免造成浏览器调试麻烦。</p>
<p id="c8" style="font-weight: bold;">第八步：页脚信息(版权等)的表现设置：</p>
<p>首先需要控制页脚的文本显示：</p>
<p class="script">#footer {<br />clear: both;<br />height: 66px;<br /><span style="color: red;">font-family: Tahoma, Arial, Helvetica, Sans-serif;<br />font-size: 10px;<br />color: #c9c9c9;</span><br />}</p>
<p>接着我们需要设置存在链接的文本的显示，在这我们没有改变文本的颜色(仍然为#c9c9c9)，而只是让下划线消失：</p>
<p class="script">#footer a {<br />color: #c9c9c9;<br /><span style="color: red;">text-decoration: none;</span><br />}</p>
<p>但是我们想让那些存在链接的文本，在鼠标悬停在其上方时变色为#db6d16：</p>
<p class="script">#footer a:hover {<br />color: #db6d16;<br />}</p>
<p>然后我们想给页脚加上灰色的上边框，在footer层的四周设置一些间隙，并加大文本的行距：</p>
<p class="script">#footer {<br />clear: both;<br />height: 66px;<br />font-family: Tahoma, Arial, Helvetica, Sans-serif;<br />font-size: 10px;<br />color: #c9c9c9;<br /><span style="color: red;">border-top: 1px solid #efefef;<br />padding: 13px 25px;<br />line-height: 18px;</span><br />}</p>
<p>最后我们需要做的就是让副导航层(#altnav)向右浮动，需要指出的是，浮动层是必须设置宽度(width)才能正常浮动的，所以我们把#altnav的宽度设置为350px，略宽于文本的长度(为了让副标题的文字显示完全)，然后让文本向右对齐：</p>
<p class="script">#footer #altnav {<br />width: 350px;<br />float: right;<br />text-align: right;<br />}</p>
<p>如果你按照以上方法，将得到如下图所示的页脚样式(点击看大图)：<br /><a href="http://static.flickr.com/50/139003435_165450807b_o.gif"><img src="http://static.flickr.com/50/139003435_165450807b_m.jpg" border="0" alt="lay" /></a> </p>
<p id="c9" style="font-weight: bold;">第九步：导航条的制作(较难)：</p>
<p><span style="color: red;">Jorux注:</span>导航条之所以放在第九步讲，是因为导航条制作是本教程中最难的部分，自然也是技术含量最高的地方.导航条的制作可易可难，但这里介绍的相对较难，您能坚持到这一步已经很不易，如果你只是有个导航条就满足的话，请参看第八步的副导航条的制作。</p>
<p>先去掉导航条的红色背景，还有就是移除html文件中main-nav层的"class="hidden"",使导航条的内容显示出来。我们实现导航条图片的变换的方法是纯css代码的，不包含任何js或是flash，因此我们所用的图片是4幅分别由三个小图组合而成的图片，如下所示，并将这4幅图保存于/images/nav/文件夹中:</p>
<p><img src="http://static.flickr.com/91/263508738_9f92ac6105.jpg" border="0" height="150" alt="lay" style="border-width: 0pt; padding: 0px;" width="71" /><img src="http://static.flickr.com/122/263508964_7cf5da3946.jpg" border="0" height="150" alt="lay" style="border-width: 0pt; padding: 0px;" width="84" /><img src="http://static.flickr.com/94/263509037_1b7d40381d.jpg" border="0" height="150" alt="lay" style="border-width: 0pt; padding: 0px;" width="95" /><img src="http://static.flickr.com/28/263509166_74eafd7a55.jpg" border="0" height="150" alt="lay" style="border-width: 0pt; padding: 0px;" width="106" /></p>
<p>我们实现导航条的动态效果如下图所示(点击看大图)：<br /><a href="http://static.flickr.com/45/139015436_a350af8dda_o.gif"><img src="http://static.flickr.com/45/139015436_a350af8dda_m.jpg" border="0" alt="lay" /></a><br />在网页显示的只是图中红框标出的部分，如果把每幅图分为上，中，下三部分的话，未发生动作时显示上部，当光标悬停时，显示的是中部，被选择时则显示下部。</p>
<p>接下来进入css代码部分，先往css文件中写入：</p>
<p class="script">/* Main Navigation */<br />#main-nav { height: 50px; }<br />#main-nav ul { margin: 0; padding: 0; }</p>
<p>注意：/* Main Navigation */为增加css文件可读性的说明，不会影响表现。<br />#main-nav的height属性定义了main-nav层的高度；"#main-nav ul" 则定义main-nav层中列表的属性，在这里先定义其margin和padding为0。</p>
<p>根据先前的设计，导航条应该和左边有一定的距离，这就需要设置main-nav层的左边距(padding-left)为11px,但由于IE5和Mac浏览器的BUG，需要加入以下代码：</p>
<p class="script">/* IE5 Mac Hack \*/ <br />#main-nav { padding-left: 11px; } <br />/*/ <br />#main-nav { padding-left: 11px; overflow: hidden; } <br />/* End Hack */</p>
<p>现在你可以看到导航列表距左边有11px的距离，但是列表项目是竖排的，将&lt;li&gt;，即列表项目向左对齐就能使其从左到右横向排列：</p>
<p class="script"><span style="color: red;">#main-nav li { float: left; }</span></p>
<p>为了使列表项目的尺寸和容纳它的层保持一致，并利用浮动属性使列表项目的文本隐藏，写入：</p>
<p class="script">#main-nav li a {<br />display: block;<br />height: 0px !important;<br />height /**/:50px; /* IE 5/Win hack */ <br />padding: 50px 0 0 0;<br />overflow: hidden;<br />background-repeat: no-repeat;<br />}</p>
<p>接着，要实现当光标悬停于列表项目上时，显示背景图片的中部，因此需要将背景图片向上移动50px，写入：</p>
<p class="script">#main-nav li a:hover {<br />background-position: 0 -50px;<br />}</p>
<p>给各个列表项目设置宽度和背景图片的路径：</p>
<p class="script">#main-nav li#about,<br />#main-nav li#about a { width: 71px; background-image: url(../images/nav/about.gif); }<br />#main-nav li#services,<br />#main-nav li#services a { width: 84px; background-image: url(../images/nav/services.gif); }<br />#main-nav li#portfolio,<br />#main-nav li#portfolio a { width: 95px; background-image: url(../images/nav/portfolio.gif); }<br />#main-nav li#contact,<br />#main-nav li#contact a { width: 106px; background-image: url(../images/nav/contact.gif); }</p>
<p>最后我们要做的就是，当列表项目被选时，显示背景图片的下部。为此我们需要增加一些css代码对原有的css表现作一些修改：</p>
<p class="script">body.about li#about,<br />body.about li#about a,<br />body.services li#services,<br />body.services li#services a,<br />body.portfolio li#portfolio,<br />body.portfolio li#portfolio a,<br />body.contact li#contact,<br />body.contact li#contact a {<br />background-position: 0 -100px;<br />}</p>
<p>以上看似庞大的css选择器可以识别body标签的类(class)，如html中为：</p>
<p class="script">&lt;body class="about"&gt;</p>
<p>以上css选择器就让li#about,li#about a,的背景向上移动100px，使其显示背景图片的下部。</p>
<p>如果我们希望网站头部背景图片也根据body标签的类进行变换，就需修改css的#header为：</p>
<p class="script"><span style="color: red;">body.about </span>#header {<br />height: 150px;<br />background: #db6d16<br />url(../images/headers/about.jpg);<br />}</p>
<p>至此就完成了"About"网页的制作,依此类推，修改html中body的类为services/portfolio/contact制作相应html文件并分别保存。<br />在css文件中添加各个网页相应的头部背景图片路径(如services网页的头部背景图片为services.jpg,在css中添加如下代码)： </p>
<p class="script"><span style="color: red;">body.services </span>#header {<br />height: 150px;<br />background: #db6d16<br />url(../images/headers/<span style="color: red;">services.jpg</span>);<br />}</p>
<p>然后用超级链接将这些网页连接起来，就组成了一个小网站了。</p>
<p id="c10" style="font-weight: bold;">第十步：解决IE浏览器的显示BUG： </p>
<p>要继续此教程需要IE的以前的版本进行测试，你可以在<a href="http://downloads.skyzyx.com/" target="_blank"><span style="color: #000000;">这里</span></a>下载到。绝大部分中国用户使用的是IE6.0，因此您几乎不需要看下去了。</p>
<p>IE中主要出问题的是IE5和IE5.5,如其不能识别css中margin值为auto，要实现层的中间对齐，需加入：</p>
<p class="script">body {<br />font-family: Arial, Helvetica, Verdana, Sans-serif;<br />font-size: 12px;<br />color: #666666;<br /><span style="color: red;">text-align: center;</span><br />}</p>
<p>但是这样设置之后，网站的content层的文本也变成中间对齐了，我们需要让其向左对齐，加入：</p>
<p class="script">#page-container {<br />width: 760px;<br />margin: auto;<br /><span style="color: red;">text-align: left;</span>}</p>
<p>关于页脚的BUG，将版权内容加入新的#copyright层中，在html中加入：</p>
<p class="script">&lt;div id="copyright"&gt;<br />Copyright &copy; Enlighten Designs&lt;br /&gt;<br />Powered by &lt;a xhref="http://www.enlightenhosting.com/" mce_href="http://www.enlightenhosting.com/"&gt;Enlighten Hosting&lt;/a&gt; and<br />&lt;a xhref="http://www.vadmin.co.nz/" mce_href="http://www.vadmin.co.nz/"&gt;Vadmin 3.0 CMS&lt;/a&gt;<br />&lt;/div&gt;</p>
<p>在css文件中加入，并将#footer的<span style="color: red;">padding-top: 13px;</span>移除：</p>
<p class="script">#footer #altnav {<br />clear: both;<br />width: 350px;<br />float: right;<br />text-align: right;<br /><span style="color: red;">padding-top: 13px;</span><br />}<br /><span style="color: red;">#footer #copyright {<br />padding-top: 13px;<br />}</span></p>
<p>最后要解决的BUG是当光标在导航条的被选列表项目链接上悬停时(如在about的网页，body的类为about，但我们将光标移到导航条的about图片上时)，背景图片消失了，这就需要加入：</p>
<p class="script">body.about li#about,<br />body.about li#about a,<br /><span style="color: red;">body.about dt#about a:hover,</span><br />body.services li#services,<br />body.services li#services a,<br /><span style="color: red;">body.services li#services a:hover,</span><br />body.portfolio li#portfolio,<br />body.portfolio li#portfolio a,<br /><span style="color: red;">body.portfolio li#portfolio a:hover,</span><br />body.contact li#contact,<br />body.contact li#contact a,<br /><span style="color: red;">body.contact li#contact a:hover</span> {<br />background-position: 0 -100px;<br />}</p>
本教程到此结束，如果您觉得不错，<span style="color: red;">请留言支持Jorux</span>。 </div>
          <br/>
          <span style="color:red;">
            <a href="http://joerong666.javaeye.com/blog/211007#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jul 2008 12:57:15 +0800</pubDate>
        <link>http://joerong666.javaeye.com/blog/211007</link>
        <guid>http://joerong666.javaeye.com/blog/211007</guid>
      </item>
      <item>
        <title>获取有效工作日封装类</title>
        <author>joerong666</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://joerong666.javaeye.com">joerong666</a>&nbsp;
          链接：<a href="http://joerong666.javaeye.com/blog/209881" style="color:red;">http://joerong666.javaeye.com/blog/209881</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1>获取有效工作日封装类</h1>
<div class="from_info">http://www.sina.com.cn 2008年06月25日&nbsp;16:36&nbsp; <span class="linkRed02"><a href="http://www.it168.com/" target="_blank"><span style="color: #a20010;">IT168.com</span></a></span></div>
<!--正文内容开始--><!-- google_ad_section_start -->
<div class="artibody" id="artibody"><!-- 正文内部文字导航 : begin --><!-- 正文内部文字导航 : end --><!-- $ { 新版显示正文}--><br />【IT168技术文档】<br /><br />&nbsp; 在做项目的时候要求得到该月的有效工作日，于是开始写静态方法，后来由于还要获取当月开始到现在的有效工作日，于是再写方法，最后因为以后的项目还要用于是继续扩展，直接封装出一个类来。 </div>
<div class="artibody">using System;<br />using System.Collections.Generic;<br />using System.Text;</div>
<div class="artibody">namespace MyCom.Util.Time<br />{<br />&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp; /// 获取有效工作日<br />&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp; public class WorkDateProvider<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region 静态方法段<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 在一段内获取有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt1"&gt;开始日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt2"&gt;结束日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateBy2Date(DateTime dt1, DateTime dt2, int intNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //判断不包含天数是否合法<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (intNoContain &lt;= 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw (new Exception("不包含天数必须大于0"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2) - intNoContain;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 在一段内获取有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt1"&gt;开始日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt2"&gt;结束日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intContain"&gt;包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateBy2Date(DateTime dt1, DateTime dt2, int intNoContain, int intContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (intContain &lt;= 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw (new Exception("包含天数必须大于0"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNoContain) + intContain;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 在一段内获取有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt1"&gt;开始日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt2"&gt;结束日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrContain"&gt;包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateBy2Date(DateTime dt1, DateTime dt2, string[] strarrNoContain, string[] strarrContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intContain = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string strContain in strarrContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dtDuring = DateTime.Parse(strContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dt1 &lt;= dtDuring &amp;&amp; dtDuring &lt;= dt2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (dtDuring.DayOfWeek) //判断是否本来不是工作日的日期<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Saturday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Sunday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intContain++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception ex)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw (ex);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, strarrNoContain) + intContain;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div class="artibody">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 在一段内获取有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt1"&gt;开始日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt2"&gt;结束日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateBy2Date(DateTime dt1, DateTime dt2, string[] strarrNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intNotContain = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string strNoContain in strarrNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dtDuring = DateTime.Parse(strNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dt1 &lt;= dtDuring &amp;&amp; dtDuring &lt;= dt2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (dtDuring.DayOfWeek)//判断原来是工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Monday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Tuesday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Wednesday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Thursday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Friday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intNotContain++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception ex)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw (ex);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNotContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 在一段内获取有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt1"&gt;开始日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt2"&gt;结束日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateBy2Date(DateTime dt1, DateTime dt2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dt1 &gt; dt2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw (new Exception("开始日期必须大于结束日期"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intTotalDays = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (DateTime dtDuring = dt1; dtDuring &lt;= dt2; dtDuring = dtDuring.AddDays(1))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (dtDuring.DayOfWeek)//判断是否为工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Monday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Tuesday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Wednesday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Thursday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Friday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intTotalDays++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Saturday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Sunday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return intTotalDays;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div class="artibody">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取制定年月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intYear"&gt;年份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthAndYear(int intMonth, int intYear)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", intYear, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", intYear, intMonth, System.DateTime.DaysInMonth(intYear, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取制定年月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intYear"&gt;年份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthAndYear(int intMonth, int intYear, int intNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", intYear, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", intYear, intMonth, System.DateTime.DaysInMonth(intYear, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取制定年月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intYear"&gt;年份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intContain"&gt;包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthAndYear(int intMonth, int intYear, int intNoContain, int intContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", intYear, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", intYear, intMonth, System.DateTime.DaysInMonth(intYear, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNoContain, intContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取制定年月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intYear"&gt;年份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthAndYear(int intMonth, int intYear, string[] strarrNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", intYear, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", intYear, intMonth, System.DateTime.DaysInMonth(intYear, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, strarrNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取制定年月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intYear"&gt;年份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrContain"&gt;包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthAndYear(int intMonth, int intYear, string[] strarrNoContain, string[] strarrContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", intYear, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", intYear, intMonth, System.DateTime.DaysInMonth(intYear, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, strarrNoContain, strarrContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年制定月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthThisYear(int intMonth)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, intMonth, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年制定月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthThisYear(int intMonth, int intNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, intMonth, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年制定月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intContain"&gt;包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthThisYear(int intMonth, int intNoContain, int intContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, intMonth, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNoContain, intContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年制定月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthThisYear(int intMonth, string[] strarrNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, intMonth, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, strarrNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年制定月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrContain"&gt;包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByMonthThisYear(int intMonth, string[] strarrNoContain, string[] strarrContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, intMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, intMonth, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, intMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, strarrNoContain, strarrContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div class="artibody">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年本月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByThisMonthThisYear()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, DateTime.Now.Date.Month));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, DateTime.Now.Date.Month, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, DateTime.Now.Date.Month)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年本月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByThisMonthThisYear(int intNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, DateTime.Now.Date.Month));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, DateTime.Now.Date.Month, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, DateTime.Now.Date.Month)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年本月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intNoContain"&gt;不包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intContain"&gt;包含日期数&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByThisMonthThisYear(int intNoContain, int intContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, DateTime.Now.Date.Month));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, DateTime.Now.Date.Month, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, DateTime.Now.Date.Month)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, intNoContain, intContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年本月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByThisMonthThisYear(string[] strarrNoContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, DateTime.Now.Date.Month));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, DateTime.Now.Date.Month, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, DateTime.Now.Date.Month)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, strarrNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取本年本月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrNoContain"&gt;不包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="strarrContain"&gt;包含日期列表&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int GetWorkDateByThisMonthThisYear(string[] strarrNoContain, string[] strarrContain)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt1 = DateTime.Parse(string.Format("{0}-{1}-01", DateTime.Now.Date.Year, DateTime.Now.Date.Month));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dt2 = DateTime.Parse(string.Format("{0}-{1}-{2}", DateTime.Now.Date.Year, DateTime.Now.Date.Month, System.DateTime.DaysInMonth(DateTime.Now.Date.Year, DateTime.Now.Date.Month)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDateBy2Date(dt1, dt2, strarrNoContain, strarrContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region 内部变量<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected int _WorkDateYear = DateTime.Now.Year;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected int _WorkDateMonth = DateTime.Now.Month;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected string[] _NoContainDays = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected string[] _ContainDays = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected DateTime _WorkDateStart = DateTime.Now;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected DateTime _WorkDateEnd = DateTime.Now;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected GetDaysType _GetDaysType = GetDaysType.ByMonthAndYear;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region 属性<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 制定年份<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int WorkDateYear<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _WorkDateYear = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _WorkDateYear;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 制定月份<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int WorkDateMonth<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _WorkDateMonth = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _WorkDateMonth;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 不包含日期<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string[] NoContainDays<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _NoContainDays = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _NoContainDays;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 包含日期<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string[] ContainDays<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _ContainDays = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _ContainDays;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div class="artibody">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 开始日期<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public DateTime WorkDateStart<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _WorkDateStart = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _WorkDateStart;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 结束日期<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public DateTime WorkDateEnd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _WorkDateEnd = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _WorkDateEnd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取工作日类型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public GetDaysType EmunGetDaysType<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _GetDaysType = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _GetDaysType;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region 调用枚举<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取工作日类型枚举<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public enum GetDaysType<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByDateStartAndEnd,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByMonthAndYear<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region 实例构造函数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 默认本年本月获取有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public WorkDateProvider()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EmunGetDaysType = GetDaysType.ByMonthAndYear;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 设定开始日期和结束日期获取有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt1"&gt;开始日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="dt2"&gt;结束日期&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public WorkDateProvider(DateTime dt1, DateTime dt2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkDateStart = dt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkDateEnd = dt2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EmunGetDaysType = GetDaysType.ByDateStartAndEnd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 设定本年指定月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public WorkDateProvider(int intMonth)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkDateMonth = intMonth;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EmunGetDaysType = GetDaysType.ByMonthAndYear;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 设定指定年月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intMonth"&gt;月份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="intYear"&gt;年份&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public WorkDateProvider(int intMonth, int intYear)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkDateMonth = intMonth;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkDateYear = intYear;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EmunGetDaysType = GetDaysType.ByMonthAndYear;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region 实例方法段<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取有效时间<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int GetWorkDays()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDays(EmunGetDaysType);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取有效时间<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="getDaysType"&gt;获取时间类型&lt;/param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int GetWorkDays(GetDaysType getDaysType)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (getDaysType == GetDaysType.ByDateStartAndEnd)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDayByDateStartAndEnd();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDayByYearAndMonth();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取制定年月的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int GetWorkDayByYearAndMonth()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkDateStart = DateTime.Parse(string.Format("{0}-{1}-01", WorkDateYear, WorkDateMonth));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkDateEnd = DateTime.Parse(string.Format("{0}-{1}-{2}", WorkDateYear, WorkDateMonth, DateTime.DaysInMonth(WorkDateYear, WorkDateMonth)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return GetWorkDayByDateStartAndEnd();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div class="artibody">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 获取开始日期到结束日期之间的有效工作日<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;有效工作日数&lt;/returns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected int GetWorkDayByDateStartAndEnd()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //判断时间有效性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (WorkDateStart &gt; WorkDateEnd)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw (new Exception("开始日期大于结束日期"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intNoContainDays = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intContainDays = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intTotalDays = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //计算不包含日期数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (NoContainDays != null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string strNoContain in NoContainDays)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dtDuring = DateTime.Parse(strNoContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (WorkDateStart &lt;= dtDuring &amp;&amp; dtDuring &lt;= WorkDateEnd)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (dtDuring.DayOfWeek)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Monday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Tuesday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Wednesday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Thursday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Friday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intNoContainDays++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //计算包含日期数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ContainDays != null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string strContain in ContainDays)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime dtDuring = DateTime.Parse(strContain);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (WorkDateStart &lt;= dtDuring &amp;&amp; dtDuring &lt;= WorkDateEnd)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (dtDuring.DayOfWeek)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Saturday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DayOfWeek.Sunday:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&