问题如下:
我想计算给定年月日(格式为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;
}
有任何不明白的请问我 我会立即补充
我想计算给定年月日(格式为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;
}
有任何不明白的请问我 我会立即补充
解决方案 »
- ASP.NET中将绑定到Lable中的数据进行字符串切割
- 实现动态添加到数据库
- onmousedown事件问题
- System.NullReferenceException
- vs 2003 ajax 类型未定义错误 内详
- 如何获取ListView中DataPager的子控件的ClientID
- vs2008中控制台程序添加基于服务的数据库出现错误
- IE Web Control 分步加载的问题,请问该怎么解决?
- visual studio inherits不能够找到
- 如何迭代出当前页面的所有RequiredFieldValidator对象?
- 怎么让结果有.5的数自动向前加1?
- 如何用sql按时间模糊查询
DateTime.DaysInMonth
这个就求出来某个月有多少天了,多少天同时也就是月末的那天的day部分
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);
}
jzywh 70 分
你们觉得可以不?