1. 兼容IE8-11、360瀏覽器、chrome、firefox等主流瀏覽器,手機(jī)端也可使用;
2. 添加點(diǎn)擊前一周、后一周和高亮等功能。
1、初始化周歷原理:
首先獲取表示當(dāng)前星期幾的數(shù)字currDay=d.getDay(),一般是0(周日)-6(周六);
然后把值取負(fù)數(shù)傳到方法creatWeeklyCalendar進(jìn)行循環(huán)顯示一周時(shí)間;
Tips:方法calcTime是利用當(dāng)前毫秒數(shù)+-循環(huán)數(shù)的毫秒數(shù)(someTime=d.getTime() + (24 * 60 * 60 * 1000) * num)算出這天的年月日。
for (var i=some, len=some + 7; i < len; i++) {
if (this.calcTime(i).month==currMonth && this.calcTime(i).date==currDate) {
html +='<li class="active"><a href="javascript:;" data-year="' + this.calcTime(i).year + '" title="' + this.calcTime(i).month + '月">' + this.calcTime(i).date + '</a></li>';
} else {
html +='<li><a href="javascript:;" data-year="' + this.calcTime(i).year + '" title="' + this.calcTime(i).month + '月">' + this.calcTime(i).date + '</a></li>';
}
}
最后把html輸出到頁面。
2、前一周和后一周原理:
首先利用點(diǎn)擊前一周和后一周按鈕,對計(jì)算數(shù)clickedTimes進(jìn)行+-;
然后把clickedTimes新值傳到方法changeWeek;
最后執(zhí)行this.creatWeeklyCalendar(-currDay - (7 * clickedTimes)),重新輸出新一周的數(shù)據(jù)。
3、最后把構(gòu)造函數(shù)暴露window.WeeklyCalendar=WeeklyCalendar。
owerDesigner設(shè)計(jì)表
1.FILE-NEW-PhysicalDataModel,設(shè)置數(shù)據(jù)庫為MySql.
2 PK代表primary key ,fk代表外鍵,添加連線,指向被引用表。
3.joins指定外鍵列,雙擊連線,彈出如下圖。
4 Database-Generate Database可以生成sql,將sql在navicat執(zhí)行即可生成表結(jié)構(gòu)。
5點(diǎn)保存按鈕可以生成pdm文件,暫時(shí)保存設(shè)計(jì)的表。
6 通過SQL腳本逆向生成PDM模型,這稱為逆向工程
File-reverse engineer-database
7 生成數(shù)據(jù)庫報(bào)表文件,即說明性的文檔,很方便的給其他人員查看。
report——report wizard
8 ElementUI學(xué)習(xí)
近在學(xué)習(xí)過程中需要通過日期來確定當(dāng)天為星期幾,雖然很多編程語言有封裝好的方法,但每種語言在命名和使用上也不一定相同,那么是否能夠找到一種通用的方法呢,還真找到了。
基姆拉爾森計(jì)算公式
W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日數(shù),m表示月份數(shù),y表示年數(shù)。W為計(jì)算得出的星期幾(0~6 表示星期一 到 星期日)
注意:在公式中有個(gè)與其他公式不同的地方:把1月和2月看成是上一年的13月和14月,
例: 如果是2017-01-01則換算成:2016-13-01來代入公式計(jì)算。
如果是2017-02-01則換算成:2016-14-01來代入公式計(jì)算。
利用編程語言C#布局一個(gè)簡單界面,如下:
開始編寫代碼吧,先編程實(shí)現(xiàn)基姆拉爾森計(jì)算公式:
public static String GetWeekByDate(int year, int month, int day)
{
String dayoftheweek=String.Empty;
if (month==1 || month==2)
{
month +=12; //month=month + 12;
year--; //year=year - 1;
}
int w=(day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
switch (w)
{
case 0:
dayoftheweek="星期一";
break;
case 1:
dayoftheweek="星期二";
break;
case 2:
dayoftheweek="星期三";
break;
case 3:
dayoftheweek="星期四";
break;
case 4:
dayoftheweek="星期五";
break;
case 5:
dayoftheweek="星期六";
break;
case 6:
dayoftheweek="星期日";
break;
}
return dayoftheweek;
}
重點(diǎn)代碼已完成,接著給Button來個(gè)點(diǎn)擊事件吧
private void button1_Click(object sender, EventArgs e)
{
//獲取選擇的日期,以yyyy-MM-dd(例2017-01-01)顯示字符串
String date=dateTimePicker1.Value.ToString("yyyy-MM-dd");
//通過符號 - 將獲取的日期進(jìn)行分割并組合成數(shù)組
String[] temp=dateTimePicker1.Value.ToString("yyyy-MM-dd").Split('-');
//獲取數(shù)組中 年 -- temp[0] 月 -- temp[1] 日 -- temp[2]
//并且將值代入靜態(tài)方法GetWeekByDate中來得到星期幾
//Convert.ToInt32() 方法將string轉(zhuǎn)換為int
textBox1.Text=date + " 為 " + GetWeekByDate(Convert.ToInt32(temp[0]), Convert.ToInt32(temp[1]), Convert.ToInt32(temp[2]));
}
到這里,大功告成,直接來看運(yùn)行的效果
用其他編程語言借助基姆拉爾森計(jì)算公式同樣可以寫出計(jì)算星期幾的程序,基本就實(shí)現(xiàn)通用啦,感興趣的小伙伴自己動(dòng)手試試吧。你不去做,永遠(yuǎn)不知道自己能力有強(qiáng)!加油
*請認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。