Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > .NET中根据日起求周别,或者根据周别求日起的方法
【标  题】:.NET中根据日起求周别,或者根据周别求日起的方法
【关键字】:.NET
【来  源】:http://blog.csdn.net/marvinhong/archive/2006/06/03/771426.aspx

.NET中根据日起求周别,或者根据周别求日起的方法

Your Ad Here

以下方法供大家参考,若想返回日期类型,自己修改.

using System;
using System.Web.UI;
using System.Globalization;

public partial class CSDateTime : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("今天是第几周? -- ");
        Response.Write(GetWeekOfYear(DateTime.Now));
        Response.Write("<br>");
        Response.Write("第200602周的日期起讫? -- ");
        Response.Write(GetWeekFirstDay("200602"));
        Response.Write(" - ");
        Response.Write(GetWeekLastDay("200602"));
        Response.Write("<br>");
        Response.Write("第200622周包含哪些日期? -- ");
        string[] day = GetWeekRange("200622");
        for (int i = 0; i < 7;i++ )
        {
            Response.Write(day[i] + " ");
        }
    }
   
    /// <summary>
    /// 求指定日期的周别,周别的第一天为星期天
    /// </summary>
    /// <param name="dt">某一天</param>
    /// <returns>返回的周别格式如200601,表示2006年度第一周</returns>
    private string GetWeekOfYear(DateTime dt)
    {
        CultureInfo ci = CultureInfo.CurrentCulture;
        Calendar calendar = ci.Calendar;
        CalendarWeekRule rule = ci.DateTimeFormat.CalendarWeekRule;
        DayOfWeek dow = ci.DateTimeFormat.FirstDayOfWeek;
        int week = calendar.GetWeekOfYear(dt, rule, dow);
        string weekId = dt.Year + week.ToString("00");
        return weekId;
    }
   
    /// <summary>
    /// 求指定周别的第一天
    /// </summary>
    /// <param name="weekId">周别,格式如200601</param>
    /// <returns>返回日期的yyyy-MM-dd字串</returns>
    private string GetWeekFirstDay(string weekId)
    {
        int year = int.Parse(weekId.Substring(0,4));
        DateTime newYearDay = new DateTime(year,1,1);
        int firstweekfirstday = Convert.ToInt32(newYearDay.DayOfWeek);
        int days = (int)(7-firstweekfirstday);
        DateTime secondweekfisrtday = newYearDay.AddDays(days);
        int week = int.Parse(weekId.Substring(4, 2));
        string firstdate = secondweekfisrtday.AddDays((week - 2) * 7).ToString("yyyy-MM-dd");
        return firstdate;
    }
   
    /// <summary>
    /// 求指定周别的最后一天
    /// </summary>
    /// <param name="weekId">周别,格式如200601</param>
    /// <returns>返回日期的yyyy-MM-dd字串</returns>
    private string GetWeekLastDay(string weekId)
    {
        int year = int.Parse(weekId.Substring(0, 4));
        DateTime newYearDay = new DateTime(year, 1, 1);
        int firstweekfirstday = Convert.ToInt32(newYearDay.DayOfWeek);
        int days = (int)(7 - firstweekfirstday);
        DateTime secondweekfisrtday = newYearDay.AddDays(days);
        int week = int.Parse(weekId.Substring(4, 2));
        string lastdate = secondweekfisrtday.AddDays((week - 2) * 7+6).ToString("yyyy-MM-dd");
        return lastdate;
    }
   
    /// <summary>
    /// 求指定周别的日期范围
    /// </summary>
    /// <param name="weekId">周别,格式如200601</param>
    /// <returns>返回日期的yyyy-MM-dd字串</returns>
    private string[] GetWeekRange(string weekId)
    {
        string[] day = new string[7];
        int year = int.Parse(weekId.Substring(0, 4));
        DateTime newYearDay = new DateTime(year, 1, 1);
        int firstweekfirstday = Convert.ToInt32(newYearDay.DayOfWeek);
        int days = (int)(7 - firstweekfirstday);
        DateTime secondweekfisrtday = newYearDay.AddDays(days);
        int week = int.Parse(weekId.Substring(4, 2));
        DateTime firstdate = secondweekfisrtday.AddDays((week - 2) * 7);
        DateTime lastdate = secondweekfisrtday.AddDays((week - 2)*7 + 6);
        day[0] = firstdate.ToString("yyyy-MM-dd");
        for (int i=1;i<=5;i++)
        {
            day[i] = firstdate.AddDays(i).ToString("yyyy-MM-dd");
        }
        day[6] = lastdate.ToString("yyyy-MM-dd");
        return day;
    }

}

写给XML初学者的一些话:【上一篇】
DotNet界面实现学习纲要:【下一篇】
【相关文章】
  • 在.NET中如何实现像VB.NET中MSBBOX的功能!?
  • C#(7):ADO.NET进行数据库编程
  • ASP.NET状态管理
  • 从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误
  • c#.net如何获取本机ip
  • 为ASP.NET 2.0网站生成唯一程序集
  • Sql Server Data Access For .Net
  • .NET调用procedure的方法
  • .Net中常见问题及解决方法归类
  • .NET 配置
  • 【随机文章】
  • Flash放大镜效果深入改进
  • 一套笔试题(PHP)
  • 三星E108、X108 drawString 显示乱码解决方案。
  • JavaScript对象
  • Cisco防火墙技术汇总
  • Agile Web Development with Rails 翻译(十一)
  • Foxmail超酷技巧之管理好你的邮件
  • 函数重载
  • 病毒 Worm/Protoride.f“普鲁托”
  • Common Function VCL component
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.