月份的问题,请高手帮帮看看 急!

lanxing106 2008-07-10 11:56:08
问题如下:
我想计算给定年月日(格式为2008-7-1)的前半年(前6个月)的每半个月的显示,显示结果希望是这样的
2008-6-1 2008-6-15
2008-6-16 2008-6-30
2008-5-1 2008-5-15
2008-5-16 2008-5-31
2008-4-1 2008-4-15
2008-4-16 2008-4-30
2008-3-1 2008-3-15
2008-3-16 2008-3-31
2008-2-1 2008-2-15
2008-2-16 2008-2-29
2008-1-1 2008-1-15
2008-1-16 2008-1-31
但是我写的代码显示的时候和上面的不一致 请看:
2008-06-30 2008-06-15
2008-06-15 2008-05-31
2008-05-31 2008-05-16
2008-05-16 2008-04-30
2008-04-30 2008-04-15
2008-04-15 2008-03-31
2008-03-31 2008-03-16
2008-03-16 2008-02-29
2008-02-29 2008-02-14
2008-02-14 2008-01-31
2008-01-31 2008-01-16
2008-01-16 2007-12-31

我不知道该怎么改才可以像我所希望的那样 下面我贴出我的几个主要的函数
//Page_Load
protected void Page_Load(object sender, EventArgs e)
{
//sixMonths("2008-07-01");

//int[] aaa=getTwelvemonth("2008-07-01");
//for (int i = 0; i < aaa.Length; i++)
//{
// Response.Write("<br/>----"+aaa[i]);
//}


getTwelveTime("2008-07-01");
if (!Page.IsPostBack)
{
//填充年份值
for (int i = 1995; i <= 2050; i++)
{
YearDropDownList.Items.Add(Convert.ToString(i));
}
}
}

//返回这六个月每个月对应的天数数组
public int[] sixMonths(string myDate)
{
int[] sixArray = new int[6];
string[] sixDay = new string[6];
for (int i = 1; i <= sixDay.Length; i++)
{
sixDay[i - 1] = Convert.ToDateTime(myDate).AddMonths(-i).ToString("yyyy-MM-dd");
sixArray[i - 1] = myTime(sixDay[i - 1]);
Response.Write("<br/>sixDay=" + sixDay[i - 1] + ":sixArray=" + sixArray[i - 1]);
}
return sixArray;
}

//返回给定年月份的天数
public int myTime(string myDate)
{
int days = 0;
string[] dateValue = myDate.Split('-');
for (int i = 0; i < dateValue.Length; i++)
{
days = DateTime.DaysInMonth(Convert.ToInt32(dateValue[i]), Convert.ToInt32(dateValue[i + 1]));
break;
}
return days;
}

//分割该月份天数
public int[] formatDay(int days)
{
int[] array = null;
switch (days)
{
case 31: array = new int[2] { 15, 16 }; break;
case 30: array = new int[2] { 15, 15 }; break;
case 29: array = new int[2] { 15, 14 }; break;
case 28: array = new int[2] { 14, 14 }; break;
default: break;
}
return array;
}

//整合存12个半月的数组
public int[] getTwelvemonth(string myDate)
{
int[] twelveMonth = new int[12];
int[] sixMonth = sixMonths(myDate);
int[] days = new int[2];
ArrayList list = new ArrayList();
for (int i = 0; i < sixMonth.Length; i++)
{
days = formatDay(sixMonth[i]);
for (int j = 0; j < days.Length; j++)
{
list.Add(days[j]);
}
}

for (int k = 0; k < list.Count; k++)
{
twelveMonth[k] = (int)list[k];
}

return twelveMonth;
}

//返回12组开始时间及结束时间
public string[,] getTwelveTime(string myDate)
{
int day = 0;
int[] days = getTwelvemonth(myDate);

string firstStrDate = null;
string secondStrDate = null;
string[,] timeDate = new string[12, 2];
for (int i = 0; i < days.Length; i++)
{

if (days.Length - 1 != i)
{
firstStrDate = Convert.ToDateTime(myDate).AddDays(-day-1).ToString("yyyy-MM-dd");
day += days[i];


secondStrDate = Convert.ToDateTime(myDate).AddDays(-day - 1).ToString("yyyy-MM-dd");


timeDate[i, 0] = firstStrDate;
timeDate[i, 1] = secondStrDate;
Response.Write("<br/>" + firstStrDate + "       " + secondStrDate);
}
else
{
firstStrDate = Convert.ToDateTime(myDate).AddDays(-day - 1).ToString("yyyy-MM-dd");
day += days[i];


secondStrDate = Convert.ToDateTime(myDate).AddDays(-day - 1).ToString("yyyy-MM-dd");


timeDate[i, 0] = firstStrDate;
timeDate[i, 1] = secondStrDate;
Response.Write("<br/>" + firstStrDate + "       " + secondStrDate);
}
}
return timeDate;
}


有任何不明白的请问我 我会立即补充

...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzywh 2008-07-10
  • 打赏
  • 举报
回复

string date = "2008-7-1";
DateTime theDate = DateTime.ParseExact(date, "yyyy-M-d", null);
theDate = theDate.AddMonths(-1);

DateTime startDate, endDate;

for (int i = 0; i < 6; i++)
{

startDate = new DateTime(theDate.Year, theDate.Month, 1);
endDate = new DateTime(theDate.Year, theDate.Month, 15);

Console.Write(startDate.ToString("yyyy-M-d"));
Console.Write("\t");
Console.Write(endDate.ToString("yyyy-M-d"));
Console.WriteLine("");

startDate = new DateTime(theDate.Year, theDate.Month, 16);
endDate = new DateTime(theDate.Year, theDate.Month, DateTime.DaysInMonth(theDate.Year, theDate.Month));

Console.Write(startDate.ToString("yyyy-M-d"));
Console.Write("\t");
Console.Write(endDate.ToString("yyyy-M-d"));

Console.WriteLine("");

theDate = theDate.AddMonths(-1);
}
JeffChung 2008-07-10
  • 打赏
  • 举报
回复
楼主把简单问题复杂化了
seesea125 2008-07-10
  • 打赏
  • 举报
回复
需要这么麻烦么?

给了某天 ,2008-7-1

年份有了把,前6个月的月份固定了把,每个月的1号和15好也固定了把

现在就剩下的问题就是,每个月的月末是几号,可能是28,29,30,31

根据这个
DateTime.DaysInMonth
这个就求出来某个月有多少天了,多少天同时也就是月末的那天的day部分

lanxing106 2008-07-10
  • 打赏
  • 举报
回复
995~!
lanxing106 2008-07-10
  • 打赏
  • 举报
回复
seesea125 30分
jzywh 70 分
你们觉得可以不?
lanxing106 2008-07-10
  • 打赏
  • 举报
回复
看来我可以JF啦 谢谢你们两位高手

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧