GVKun编程网logo

java实现日历功能(java实现简单的日历功能)

3

本文将分享java实现日历功能的详细内容,并且还将对java实现简单的日历功能进行详尽解释,此外,我们还将为大家带来关于Android使用GridView实现日历功能示例(详细代码)、Django开发

本文将分享java实现日历功能的详细内容,并且还将对java实现简单的日历功能进行详尽解释,此外,我们还将为大家带来关于Android使用GridView实现日历功能示例(详细代码)、Django开发的应用程序中使用admin自带小控件(以实现日历功能的AdminDateWidget为例)、Java JTable 实现日历的示例、JavaScript快速实现日历效果的相关知识,希望对你有所帮助。

本文目录一览:

java实现日历功能(java实现简单的日历功能)

java实现日历功能(java实现简单的日历功能)

本文实例为大家分享了java实现日历功能的具体代码,供大家参考,具体内容如下

完成一个 java application应用程序,输出一份当前所在时区当前时间的一个月的日历(1号到28/29/30/31号,以及每天对应为星期几)。

思路:

(1)获得这一年是否是闰年。闰年的2月只有28天,非闰年2月有29天。其他1、3、5、7、8、10、12月每月31天,2、4、6、9、11每月30天。
(2)根据上一步获得这个月的总天数。
(3)获得这个月第一天是星期几。然后依次填充。直到这个月最后一天。

代码如下:

import java.text.*;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

class MyCalendar {
 
    public static void main(String[] args) throws ParseException
    {        
        int maxDay = 0;    
        int firstDay = 0;    
        int currentDay = 0;        
        
        System.out.println("请输入一个日期:格式为:2020-02-02");    
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();    //键盘输入日期格式的字符串

        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date = format.parse(str);    //将字符串转化为指定的日期格式
            
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);    //将日期转化为日历
        maxDay = calendar.getActualMaximum(Calendar.DATE);    //当前日期中当前月对应的最大天数
        currentDay = calendar.get(Calendar.DATE);    //当前日期中的当前天
        calendar.set(Calendar.DATE, 1); // 设置为当前月的第一天
        firstDay = calendar.get(Calendar.DAY_OF_WEEK);    //当前日期中当前月第一天对应的星期数

         System.out.println("------------------------------------------------------");
        System.out.println("周日\t周一\t周二\t周三\t周四\t周五\t周六\n");
        System.out.println("------------------------------------------------------");
        for (int j = 1; j < firstDay; j++) //当前月第一天之前以空格输出
        {
            System.out.print("\t");
        } 
        for (int i = 1; i <= maxDay; i++) //输出当月每一天的号数
        {
            if (i == currentDay) //以*i表示当天日期
            {
                System.out.print("*");
            }
            System.out.print(i + "\t");
            if ((i - (8 - firstDay)) % 7 == 0) //以七天为一个循环输出所有天数
            {
                System.out.println("\n");
            } 
        }
    }
}

结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:
  • Java实现简单日历小程序 Java图形界面小日历开发
  • Java实现桌面日历
  • Java实现窗体程序显示日历表
  • Java实现窗体程序显示日历
  • Java编写实现窗体程序显示日历
  • java实现日历窗口小程序
  • 日历显示读出输入的年月的java代码
  • Java中的Calendar日历API用法完全解析
  • Java实现的日历功能完整示例
  • Java实现简单的日历界面

Android使用GridView实现日历功能示例(详细代码)

Android使用GridView实现日历功能示例(详细代码)

Android使用GridView实现日历功能示例,代码有点多,发个图先:

如果懒得往下看的,可以直接下载源码吧,最近一直有人要,由于时间太久了,懒得找出来整理,今天又看到有人要,正好没事就整理了一下

源码下载。。。。

布局文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent" 
 android:orientation="vertical" > 
 
 <LinearLayout 
  android:id="@+id/lay_title"android:layout_width="fill_parent" > 
 
  <TextView 
   android:id="@+id/btn_back"/> 
 
  <TextView 
   android:id="@+id/tv_top"android:text="请选择日期" /> 
 
  <TextView 
   android:id="@+id/btn_goback_to_today"android:text="今天" /> 
 </LinearLayout> 
 
 <LinearLayout 
  android:layout_width="fill_parent" 
  android:layout_height="53.0dip" 
  android:background="#ff394147" 
  android:gravity="center_vertical" > 
 
  <LinearLayout 
   android:id="@+id/btn_prev_month" 
   android:layout_width="0.0dip" 
   android:layout_height="fill_parent" 
   android:layout_weight="0.2" 
   android:gravity="center" 
   android:orientation="vertical" > 
 
   <TextView 
    android:id="@+id/left_img" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/triangle06_states" 
    android:duplicateParentState="true" 
    android:text="" 
    android:textSize="16.0dip" /> 
  </LinearLayout> 
 
  <LinearLayout 
   android:layout_width="0.0dip" 
   android:layout_height="fill_parent" 
   android:layout_weight="0.6" 
   android:gravity="center" 
   android:orientation="vertical" > 
 
   <TextView 
    android:id="@+id/tv_month" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="xxxx年14月" 
    android:textColor="#ffffffff" 
    android:textSize="21.0dip" /> 
  </LinearLayout> 
 
  <LinearLayout 
   android:id="@+id/btn_next_month" 
   android:layout_width="0.0dip" 
   android:layout_height="fill_parent" 
   android:layout_weight="0.2" 
   android:gravity="center" 
   android:orientation="vertical" > 
 
   <TextView 
    android:id="@+id/right_img" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/triangle05_states" 
    android:duplicateParentState="true" 
    android:text="" 
    android:textSize="16.0dip" /> 
  </LinearLayout> 
 </LinearLayout> 
 <LinearLayout 
  android:layout_width="fill_parent" 
  android:layout_height="22.0dip" 
  android:background="#ff8091a8" > 
 
  <TextView 
   android:layout_width="0.0dip" 
   android:layout_height="wrap_content" 
   android:layout_gravity="center" 
   android:layout_weight="1.0" 
   android:gravity="center" 
   android:text="周日" 
   android:textColor="#ffffffff" 
   android:textSize="14.0dip" /> 
 
  <TextView 
   android:layout_width="0.0dip" 
   android:layout_height="wrap_content" 
   android:layout_gravity="center" 
   android:layout_weight="1.0" 
   android:gravity="center" 
   android:text="周一" 
   android:textColor="#ffffffff" 
   android:textSize="14.0dip" /> 
 
  <TextView 
   android:layout_width="0.0dip" 
   android:layout_height="wrap_content" 
   android:layout_gravity="center" 
   android:layout_weight="1.0" 
   android:gravity="center" 
   android:text="周二" 
   android:textColor="#ffffffff" 
   android:textSize="14.0dip" /> 
 
  <TextView 
   android:layout_width="0.0dip" 
   android:layout_height="wrap_content" 
   android:layout_gravity="center" 
   android:layout_weight="1.0" 
   android:gravity="center" 
   android:text="周三" 
   android:textColor="#ffffffff" 
   android:textSize="14.0dip" /> 
 
  <TextView 
   android:layout_width="0.0dip" 
   android:layout_height="wrap_content" 
   android:layout_gravity="center" 
   android:layout_weight="1.0" 
   android:gravity="center" 
   android:text="周四" 
   android:textColor="#ffffffff" 
   android:textSize="14.0dip" /> 
 
  <TextView 
   android:layout_width="0.0dip" 
   android:layout_height="wrap_content" 
   android:layout_gravity="center" 
   android:layout_weight="1.0" 
   android:gravity="center" 
   android:text="周五" 
   android:textColor="#ffffffff" 
   android:textSize="14.0dip" /> 
 
  <TextView 
   android:layout_width="0.0dip" 
   android:layout_height="wrap_content" 
   android:layout_gravity="center" 
   android:layout_weight="1.0" 
   android:gravity="center" 
   android:text="周六" 
   android:textColor="#ffffffff" 
   android:textSize="14.0dip" /> 
 </LinearLayout> 
 <GridView 
  android:id="@+id/gridview" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:background="#00000000" 
  android:clickable="true" 
  android:clipChildren="true" 
  android:columnWidth="55.0dip" 
  android:horizontalSpacing="1.0dip" 
  android:listSelector="@null" 
  android:numColumns="7" 
  android:paddingBottom="1.0dip" 
  android:stretchMode="columnWidth" 
  android:verticalSpacing="1.0dip" /> 
 
</LinearLayout> 

Item:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
 xmlns:android="http://schemas.android.com/apk/res/android" 
 android:background="#FFFFFF" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"> 
 
 <TextView 
  android:gravity="center" 
  android:layout_width="46dp" 
  android:layout_height="55dp" 
  android:id="@+id/tvtext" 
  /> 
</LinearLayout>

Adapter:

/** 
 * 日历gridview中的每一个item显示的textview 
 * @author lmw 
 * 
 */ 
public class Calendaradapter extends BaseAdapter { 
 private boolean isLeapyear = false; //是否为闰年 
 private int daysOfMonth = 0;  //某月的天数 
 private int dayOfWeek = 0;  //具体某一天是星期几 
 private int lastDaysOfMonth = 0; //上一个月的总天数 
 private Context context; 
 private String[] dayNumber = new String[42]; //一个gridview中的日期存入此数组中 
// private static String week[] = {"周日","周一","周二","周三","周四","周五","周六"}; 
 private SpecialCalendar sc = null; 
 private LunarCalendar lc = null; 
 private Resources res = null; 
 private Drawable drawable = null; 
  
 private String currentYear = ""; 
 private String currentMonth = ""; 
 private String currentDay = ""; 
  
 private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d"); 
 private int currentFlag = -1;  //用于标记当天 
 private int[] schDateTagFlag = null; //存储当月所有的日程日期 
  
 private String showYear = ""; //用于在头部显示的年份 
 private String showMonth = ""; //用于在头部显示的月份 
 private String animalsYear = ""; 
 private String leapMonth = ""; //闰哪一个月 
 private String cyclical = ""; //天干地支 
 //系统当前时间 
 private String sysDate = ""; 
 private String sys_year = ""; 
 private String sys_month = ""; 
 private String sys_day = ""; 
  
 public Calendaradapter(){ 
  Date date = new Date(); 
  sysDate = sdf.format(date); //当期日期 
  sys_year = sysDate.split("-")[0]; 
  sys_month = sysDate.split("-")[1]; 
  sys_day = sysDate.split("-")[2]; 
   
 } 
  
 public Calendaradapter(Context context,Resources rs,int jumpMonth,int jumpYear,int year_c,int month_c,int day_c){ 
  this(); 
  this.context= context; 
  sc = new SpecialCalendar(); 
  lc = new LunarCalendar(); 
  this.res = rs; 
   
  int stepYear = year_c+jumpYear; 
  int stepMonth = month_c+jumpMonth ; 
  if(stepMonth > 0){ 
   //往下一个月滑动 
   if(stepMonth%12 == 0){ 
    stepYear = year_c + stepMonth/12 -1; 
    stepMonth = 12; 
   }else{ 
    stepYear = year_c + stepMonth/12; 
    stepMonth = stepMonth%12; 
   } 
  }else{ 
   //往上一个月滑动 
   stepYear = year_c - 1 + stepMonth/12; 
   stepMonth = stepMonth%12 + 12; 
   if(stepMonth%12 == 0){ 
     
   } 
  } 
  
  currentYear = String.valueOf(stepYear);; //得到当前的年份 
  currentMonth = String.valueOf(stepMonth); //得到本月 (jumpMonth为滑动的次数,每滑动一次就增加一月或减一月) 
  currentDay = String.valueOf(day_c); //得到当前日期是哪天 
   
  getCalendar(Integer.parseInt(currentYear),Integer.parseInt(currentMonth)); 
   
 } 
  
 public Calendaradapter(Context context,int year,int month,int day){ 
  this(); 
  this.context= context; 
  sc = new SpecialCalendar(); 
  lc = new LunarCalendar(); 
  this.res = rs; 
  currentYear = String.valueOf(year);; //得到跳转到的年份 
  currentMonth = String.valueOf(month); //得到跳转到的月份 
  currentDay = String.valueOf(day); //得到跳转到的天 
   
  getCalendar(Integer.parseInt(currentYear),Integer.parseInt(currentMonth)); 
   
 } 
  
 @Override 
 public int getCount() { 
  // Todo Auto-generated method stub 
  return dayNumber.length; 
 } 
 
 @Override 
 public Object getItem(int position) { 
  // Todo Auto-generated method stub 
  return position; 
 } 
 
 @Override 
 public long getItemId(int position) { 
  // Todo Auto-generated method stub 
  return position; 
 } 
 
 @Override 
 public View getView(int position,View convertView,ViewGroup parent) { 
 
  if(convertView == null){ 
   convertView = LayoutInflater.from(context).inflate(R.layout.calendar_item,null); 
   } 
  TextView textView = (TextView) convertView.findViewById(R.id.tvtext); 
  String d = dayNumber[position].split("\\.")[0]; 
  String dv = dayNumber[position].split("\\.")[1]; 
 
  SpannableString sp = new SpannableString(d+"\n"+dv); 
  sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD),d.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
  sp.setSpan(new RelativeSizeSpan(1.2f),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
  if(dv != null ||dv != ""){ 
   sp.setSpan(new RelativeSizeSpan(0.75f),d.length()+1,dayNumber[position].length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
  } 
//  sp.setSpan(new ForegroundColorSpan(Color.magenta),14,16,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) 
  textView.setText(sp); 
  textView.setTextColor(Color.GRAY); 
   
//  if(position<7){ 
//   //设置周 
//   textView.setTextColor(Color.WHITE); 
//   textView.setBackgroundColor(color.search_txt_color); 
//   textView.setTextSize(14); 
//  } 
   
  if (position < daysOfMonth + dayOfWeek && position >= dayOfWeek) { 
   // 当前月信息显示 
   textView.setTextColor(Color.BLACK);// 当月字体设黑 
   drawable = res.getDrawable(R.drawable.current_day_bgc); 
 
  } 
  if(schDateTagFlag != null && schDateTagFlag.length >0){ 
   for(int i = 0; i < schDateTagFlag.length; i++){ 
    if(schDateTagFlag[i] == position){ 
     //设置日程标记背景 
     textView.setBackgroundResource(R.drawable.mark); 
    } 
   } 
  } 
  if(currentFlag == position){ 
   //设置当天的背景 
   drawable = res.getDrawable(R.drawable.current_day_bgc); 
   textView.setBackgroundDrawable(drawable); 
   textView.setTextColor(Color.WHITE); 
  } 
  return convertView; 
 } 
  
 //得到某年的某月的天数且这月的第一天是星期几 
 public void getCalendar(int year,int month){ 
  isLeapyear = sc.isLeapYear(year);    //是否为闰年 
  daysOfMonth = sc.getDaysOfMonth(isLeapyear,month); //某月的总天数 
  dayOfWeek = sc.getWeekdayOfMonth(year,month);  //某月第一天为星期几 
  lastDaysOfMonth = sc.getDaysOfMonth(isLeapyear,month-1); //上一个月的总天数 
  Log.d("DAY",isLeapyear+" ====== "+daysOfMonth+" ============ "+dayOfWeek+" ========= "+lastDaysOfMonth); 
  getweek(year,month); 
 } 
  
 //将一个月中的每一天的值添加入数组dayNuber中 
 private void getweek(int year,int month) { 
  int j = 1; 
  int flag = 0; 
  String lunarDay = ""; 
   
  //得到当前月的所有日程日期(这些日期需要标记) 
 
  for (int i = 0; i < dayNumber.length; i++) { 
   // 周一 
//   if(i<7){ 
//    dayNumber[i]=week[i]+"."+" "; 
//   } 
    if(i < dayOfWeek){ //前一个月 
    int temp = lastDaysOfMonth - dayOfWeek+1; 
    lunarDay = lc.getLunarDate(year,month-1,temp+i,false); 
    dayNumber[i] = (temp + i)+"."+lunarDay; 
   }else if(i < daysOfMonth + dayOfWeek){ //本月 
    String day = String.valueOf(i-dayOfWeek+1); //得到的日期 
    lunarDay = lc.getLunarDate(year,month,i-dayOfWeek+1,false); 
    dayNumber[i] = i-dayOfWeek+1+"."+lunarDay; 
    //对于当前月才去标记当前日期 
    if(sys_year.equals(String.valueOf(year)) && sys_month.equals(String.valueOf(month)) && sys_day.equals(day)){ 
     //标记当前日期 
     currentFlag = i; 
    }  
    setShowYear(String.valueOf(year)); 
    setShowMonth(String.valueOf(month)); 
    setAnimalsYear(lc.animalsYear(year)); 
    setLeapMonth(lc.leapMonth == 0?"":String.valueOf(lc.leapMonth)); 
    setCyclical(lc.cyclical(year)); 
   }else{ //下一个月 
    lunarDay = lc.getLunarDate(year,month+1,j,false); 
    dayNumber[i] = j+"."+lunarDay; 
    j++; 
   } 
  } 
   
  String abc = ""; 
  for(int i = 0; i < dayNumber.length; i++){ 
    abc = abc+dayNumber[i]+":"; 
  } 
  Log.d("DAYNUMBER",abc); 
 
 
 } 
  
  
 public void matchScheduleDate(int year,int day){ 
   
 } 
  
 /** 
  * 点击每一个item时返回item中的日期 
  * @param position 
  * @return 
  */ 
 public String getDateByClickItem(int position){ 
  return dayNumber[position]; 
 } 
  
 /** 
  * 在点击gridView时,得到这个月中第一天的位置 
  * @return 
  */ 
 public int getStartPositon(){ 
  return dayOfWeek+7; 
 } 
  
 /** 
  * 在点击gridView时,得到这个月中最后一天的位置 
  * @return 
  */ 
 public int getEndPosition(){ 
  return (dayOfWeek+daysOfMonth+7)-1; 
 } 
  
 public String getShowYear() { 
  return showYear; 
 } 
 
 public void setShowYear(String showYear) { 
  this.showYear = showYear; 
 } 
 
 public String getShowMonth() { 
  return showMonth; 
 } 
 
 public void setShowMonth(String showMonth) { 
  this.showMonth = showMonth; 
 } 
  
 public String getAnimalsYear() { 
  return animalsYear; 
 } 
 
 public void setAnimalsYear(String animalsYear) { 
  this.animalsYear = animalsYear; 
 } 
  
 public String getLeapMonth() { 
  return leapMonth; 
 } 
 
 public void setLeapMonth(String leapMonth) { 
  this.leapMonth = leapMonth; 
 } 
  
 public String getCyclical() { 
  return cyclical; 
 } 
 
 public void setCyclical(String cyclical) { 
  this.cyclical = cyclical; 
 } 
} 

计算类

import java.util.Calendar; 
 
public class SpecialCalendar { 
 
 private int daysOfMonth = 0;  //某月的天数 
 private int dayOfWeek = 0;  //具体某一天是星期几 
 
  
  
  
 // 判断是否为闰年 
 public boolean isLeapYear(int year) { 
  if (year % 100 == 0 && year % 400 == 0) { 
   return true; 
  } else if (year % 100 != 0 && year % 4 == 0) { 
   return true; 
  } 
  return false; 
 } 
 
 //得到某月有多少天数 
 public int getDaysOfMonth(boolean isLeapyear,int month) { 
  switch (month) { 
  case 1: 
  case 3: 
  case 5: 
  case 7: 
  case 8: 
  case 10: 
  case 12: 
   daysOfMonth = 31; 
   break; 
  case 4: 
  case 6: 
  case 9: 
  case 11: 
   daysOfMonth = 30; 
   break; 
  case 2: 
   if (isLeapyear) { 
    daysOfMonth = 29; 
   } else { 
    daysOfMonth = 28; 
   } 
 
  } 
  return daysOfMonth; 
 } 
  
 //指定某年中的某月的第一天是星期几 
 public int getWeekdayOfMonth(int year,int month){ 
  Calendar cal = Calendar.getInstance(); 
  cal.set(year,1); 
  dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)-1; 
  return dayOfWeek; 
 } 
  
  
} 

节日和阴历计算类

关于日历实现代码里0x04bd8,0x04ae0,0x0a570的解释:

new Array(
0x04bd8,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x186e3,0x092e0,0x1c8d7,0x0c950,0x1d8a6,0x0b550,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,0x06ca0,0x15355,0x04da0,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,0x0aea6,0x0ab50,0x04b60,0x0aae4,0x05260,0x0f263,0x05b57,0x096d0,0x04dd5,0x04ad0,0x0d4d4,0x0d558,0x0b6a0,0x195a6,0x049b0,0x0a974,0x0b27a,0x0af46,0x0ab60,0x04af5,0x064b0,0x074a3,0x06b58,0x055c0,0x096d5,0x0c960,0x0d954,0x0da50,0x07552,0x0abb7,0x0cab5,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x15176,0x0a930,0x07954,0x05b52,0x0a6e6,0x0a4e0,0x0ea65,0x0d530,0x05aa0,0x076a3,0x04bd7,0x1d0b6,0x0d520,0x0dd45,0x0b5a0,0x056d0,0x055b2,0x0a577,0x0aa50,0x1b255,0x06d20,0x0ada0,0x14b63);

正确的解释是:

 二进制形式

xxxx xxxx xxxx xxxx xxxx
20-17 16-12 12-9 8-5 4-1 

1-4: 表示当年有无闰年,有的话,为闰月的月份,没有的话,为0。

5-16:为除了闰月外的正常月份是大月还是小月,1为30天,0为29天。

            注意:从1月到12月对应的是第16位到第5位。

17-20: 表示闰月是大月还是小月,仅当存在闰月的情况下有意义。

举个例子:

1980年的数据是: 0x095b0

二进制:0000    1001 0101 1011 0000

 表示1980年没有闰月,从1月到12月的天数依次为:30、29、29、30 、29、30、29、30、 30、29、30、30。

1982年的数据是:0x0a974

0000 1010 0 1001 0111 0100

表示1982年的4月为闰月,即有第二个4月,且是闰小月。

从1月到13月的天数依次为:30、29、30、29、 29(闰月)、 30、29、29、30、 29、30、30、30。

public class LunarCalendar { 
 private int year; //农历的年份 
 private int month; 
 private int day; 
 private String lunarMonth; //农历的月份 
 private boolean leap; 
 public int leapMonth = 0; //闰的是哪个月 
  
 final static String chineseNumber[] = { "一","二","三","四","五","六","七","八","九","十","十一","十二" }; 
 static SimpleDateFormat chineseDateFormat = new SimpleDateFormat( 
   "yyyy年MM月dd日"); 
 final static long[] lunarInfo = new long[] { 0x04bd8,0x0a5d0,0x052d0,0x0ada0 }; 
 
 //农历部分假日 
 final static String[] lunarHoliday = new String[]{ 
          "0101 春节","0115 元宵","0505 端午","0707 七夕情人","0715 中元","0815 中秋","0909 重阳","1208 腊八","1224 小年","0100 除夕" 
 }; 
  
 //公历部分节假日 
 final static String[] solarHoliday = new String[]{ 
          "0101 元旦","0214 情人","0308 妇女","0312 植树","0315 消费者权益日","0401 愚人","0501 劳动","0504 青年","0512 护士","0601 儿童","0701 建党","0801 建军","0808 父亲","0909 毛泽东逝世纪念","0910 教师","0928 孔子诞辰","1001 国庆","1006 老人","1024 联合国日","1112 孙中山诞辰纪念","1220 澳门回归纪念","1225 圣诞","1226 毛泽东诞辰纪念" 
 }; 
  
 // ====== 传回农历 y年的总天数 
 final private static int yearDays(int y) { 
  int i,sum = 348; 
  for (i = 0x8000; i > 0x8; i >>= 1) { 
   if ((lunarInfo[y - 1900] & i) != 0) 
    sum += 1; 
  } 
  return (sum + leapDays(y)); 
 } 
 
 // ====== 传回农历 y年闰月的天数 
 final private static int leapDays(int y) { 
  if (leapMonth(y) != 0) { 
   if ((lunarInfo[y - 1900] & 0x10000) != 0) 
    return 30; 
   else 
    return 29; 
  } else 
   return 0; 
 } 
 
 // ====== 传回农历 y年闰哪个月 1-12,没闰传回 0 
 final private static int leapMonth(int y) { 
  return (int) (lunarInfo[y - 1900] & 0xf); 
 } 
 
 // ====== 传回农历 y年m月的总天数 
 final private static int monthDays(int y,int m) { 
  if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0) 
   return 29; 
  else 
   return 30; 
 } 
 
 // ====== 传回农历 y年的生肖 
 final public String animalsYear(int year) { 
  final String[] Animals = new String[] { "鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪" }; 
  return Animals[(year - 4) % 12]; 
 } 
 
 // ====== 传入 月日的offset 传回干支,0=甲子 
 final private static String cyclicalm(int num) { 
  final String[] Gan = new String[] { "甲","乙","丙","丁","戊","己","庚","辛","壬","癸" }; 
  final String[] Zhi = new String[] { "子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥" }; 
  return (Gan[num % 10] + Zhi[num % 12]); 
 } 
 
 // ====== 传入 offset 传回干支,0=甲子 
 final public String cyclical(int year) { 
  int num = year - 1900 + 36; 
  return (cyclicalm(num)); 
 } 
 
 public static String getChinaDayString(int day) { 
  String chineseTen[] = { "初","廿","卅" }; 
  int n = day % 10 == 0 ? 9 : day % 10 - 1; 
  if (day > 30) 
   return ""; 
  if (day == 10) 
   return "初十"; 
  else 
   return chineseTen[day / 10] + chineseNumber[n]; 
 } 
 
 /** */ 
 /** 
  * 传出y年m月d日对应的农历. yearCyl3:农历年与1864的相差数 ? monCyl4:从1900年1月31日以来,闰月数 
  * dayCyl5:与1900年1月31日相差的天数,再加40 ? 
  * 
  * isday: 这个参数为false---日期为节假日时,阴历日期就返回节假日 ,true---不管日期是否为节假日依然返回这天对应的阴历日期 
  * @param cal 
  * @return 
  */ 
 public String getLunarDate(int year_log,int month_log,int day_log,boolean isday) { 
  // @SuppressWarnings("unused") 
  int yearCyl,monCyl,dayCyl; 
  //int leapMonth = 0; 
  String Nowadays; 
  Date baseDate = null; 
  Date Nowaday = null; 
  try { 
   baseDate = chineseDateFormat.parse("1900年1月31日"); 
  } catch (ParseException e) { 
   e.printstacktrace(); // To change body of catch statement use 
   // Options | File Templates. 
  } 
 
  Nowadays = year_log + "年" + month_log + "月" + day_log + "日"; 
  try { 
   Nowaday = chineseDateFormat.parse(Nowadays); 
  } catch (ParseException e) { 
   e.printstacktrace(); // To change body of catch statement use 
   // Options | File Templates. 
  } 
 
  // 求出和1900年1月31日相差的天数 
  int offset = (int) ((Nowaday.getTime() - baseDate.getTime()) / 86400000L); 
  dayCyl = offset + 40; 
  monCyl = 14; 
 
  // 用offset减去每农历年的天数 
  // 计算当天是农历第几天 
  // i最终结果是农历的年份 
  // offset是当年的第几天 
  int iYear,daysOfYear = 0; 
  for (iYear = 1900; iYear < 10000 && offset > 0; iYear++) { 
   daysOfYear = yearDays(iYear); 
   offset -= daysOfYear; 
   monCyl += 12; 
  } 
  if (offset < 0) { 
   offset += daysOfYear; 
   iYear--; 
   monCyl -= 12; 
  } 
  // 农历年份 
  year = iYear; 
  setYear(year); //设置公历对应的农历年份 
   
  yearCyl = iYear - 1864; 
  leapMonth = leapMonth(iYear); // 闰哪个月,1-12 
  leap = false; 
 
  // 用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天 
  int iMonth,daysOfMonth = 0; 
  for (iMonth = 1; iMonth < 13 && offset > 0; iMonth++) { 
   // 闰月 
   if (leapMonth > 0 && iMonth == (leapMonth + 1) && !leap) { 
    --iMonth; 
    leap = true; 
    daysOfMonth = leapDays(year); 
   } else 
    daysOfMonth = monthDays(year,iMonth); 
 
   offset -= daysOfMonth; 
   // 解除闰月 
   if (leap && iMonth == (leapMonth + 1)) 
    leap = false; 
   if (!leap) 
    monCyL++; 
  } 
  // offset为0时,并且刚才计算的月份是闰月,要校正 
  if (offset == 0 && leapMonth > 0 && iMonth == leapMonth + 1) { 
   if (leap) { 
    leap = false; 
   } else { 
    leap = true; 
    --iMonth; 
    --monCyl; 
   } 
  } 
  // offset小于0时,也要校正 
  if (offset < 0) { 
   offset += daysOfMonth; 
   --iMonth; 
   --monCyl; 
  } 
  month = iMonth; 
  setLunarMonth(chineseNumber[month - 1] + "月"); //设置对应的阴历月份 
  day = offset + 1; 
 
  if(!isday){ 
   //如果日期为节假日则阴历日期则返回节假日 
   //setLeapMonth(leapMonth); 
   for(int i = 0; i < solarHoliday.length; i++){ 
    //返回公历节假日名称 
    String sd = solarHoliday[i].split(" ")[0]; //节假日的日期 
    String sdv = solarHoliday[i].split(" ")[1]; //节假日的名称 
    String smonth_v = month_log+""; 
    String sday_v = day_log+""; 
    String smd = ""; 
    if(month_log < 10){ 
     smonth_v = "0"+month_log; 
    } 
    if(day_log < 10){ 
     sday_v = "0"+day_log; 
    } 
    smd = smonth_v+sday_v; 
    if(sd.trim().equals(smd.trim())){ 
     return sdv; 
    } 
   } 
    
   for(int i = 0; i < lunarHoliday.length; i++){ 
    //返回农历节假日名称 
    String ld =lunarHoliday[i].split(" ")[0]; //节假日的日期 
    String ldv = lunarHoliday[i].split(" ")[1]; //节假日的名称 
    String lmonth_v = month+""; 
    String lday_v = day+""; 
    String lmd = ""; 
    if(month < 10){ 
     lmonth_v = "0"+month; 
    } 
    if(day < 10){ 
     lday_v = "0"+day; 
    } 
    lmd = lmonth_v+lday_v; 
    if(ld.trim().equals(lmd.trim())){ 
     return ldv;   
    } 
   } 
  } 
  if (day == 1) 
   return chineseNumber[month - 1] + "月"; 
  else 
   return getChinaDayString(day); 
 
 } 
 
  
 public String toString() { 
  if (chineseNumber[month - 1] == "一" && getChinaDayString(day) == "初一") 
   return "农历" + year + "年"; 
  else if (getChinaDayString(day) == "初一") 
   return chineseNumber[month - 1] + "月"; 
  else 
   return getChinaDayString(day); 
  // return year + "年" + (leap ? "闰" : "") + chineseNumber[month - 1] + 
  // "月" + getChinaDayString(day); 
 } 
  
 /*public static void main(String[] args) { 
  System.out.println(new LunarCalendar().getLunarDate(2012,1,23)); 
 }*/ 
  
 public int getLeapMonth() { 
  return leapMonth; 
 } 
 
 public void setLeapMonth(int leapMonth) { 
  this.leapMonth = leapMonth; 
 } 
  
 /** 
  * 得到当前日期对应的阴历月份 
  * @return 
  */ 
 public String getLunarMonth() { 
  return lunarMonth; 
 } 
  
 public void setLunarMonth(String lunarMonth) { 
  this.lunarMonth = lunarMonth; 
 } 
  
 /** 
  * 得到当前年对应的农历年份 
  * @return 
  */ 
 public int getYear() { 
  return year; 
 } 
 
 public void setYear(int year) { 
  this.year = year; 
 } 
} 

Activity

/** 
 * 日历显示activity 
 * 
 * 
 */ 
public class Calendaractivity extends Activity implements OnGestureListener { 
 
 private GestureDetector gestureDetector = null; 
 private Calendaradapter calV = null; 
 private GridView gridView = null; 
 private TextView topText = null; 
 private static int jumpMonth = 0;  //每次滑动,增加或减去一个月,默认为0(即显示当前月) 
 private static int jumpYear = 0;  //滑动跨越一年,则增加或者减去一年,默认为0(即当前年) 
 private int year_c = 0; 
 private int month_c = 0; 
 private int day_c = 0; 
 private String currentDate = ""; 
 private Bundle bd=null;//发送参数 
 private Bundle bun=null;//接收参数 
 private String ruzhuTime; 
 private String lidianTime; 
 private String state=""; 
  
 public Calendaractivity() { 
 
  Date date = new Date(); 
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d"); 
  currentDate = sdf.format(date); //当期日期 
  year_c = Integer.parseInt(currentDate.split("-")[0]); 
  month_c = Integer.parseInt(currentDate.split("-")[1]); 
  day_c = Integer.parseInt(currentDate.split("-")[2]); 
   
   
 } 
 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  ActivityList.activityList.add(this); 
  setContentView(R.layout.calendar); 
  bd=new Bundle();//out 
  bun=getIntent().getExtras();//in 
   
   
   if(bun!=null&&bun.getString("state").equals("ruzhu")) 
   { 
   state=bun.getString("state"); 
   System.out.println("%%%%%%"+state); 
   }else if(bun!=null&&bun.getString("state").equals("lidian")){ 
    
   state=bun.getString("state"); 
   System.out.println("|||||||||||"+state); 
   } 
   
  gestureDetector = new GestureDetector(this); 
//  bd=new Bundle(); 
  calV = new Calendaradapter(this,getResources(),jumpMonth,jumpYear,year_c,month_c,day_c); 
  addGridView(); 
  gridView.setAdapter(calV); 
   
  topText = (TextView) findViewById(R.id.tv_month); 
  addTextToTopTextView(topText); 
  
 } 
  
 @Override 
 public boolean onFling(MotionEvent e1,MotionEvent e2,float veLocityX,float veLocityY) { 
  int gvFlag = 0;   //每次添加gridview到viewflipper中时给的标记 
  if (e1.getX() - e2.getX() > 120) { 
   //像左滑动 
   addGridView(); //添加一个gridView 
   jumpMonth++;  //下一个月 
    
   calV = new Calendaradapter(this,day_c); 
   gridView.setAdapter(calV); 
   addTextToTopTextView(topText); 
   gvFlag++; 
  
   return true; 
  } else if (e1.getX() - e2.getX() < -120) { 
   //向右滑动 
   addGridView(); //添加一个gridView 
   jumpMonth--;  //上一个月 
    
   calV = new Calendaradapter(this,day_c); 
   gridView.setAdapter(calV); 
   gvFlag++; 
   addTextToTopTextView(topText); 
 
   return true; 
  } 
  return false; 
 } 
  
  
 /** 
  * 创建菜单 
  */ 
 @Override 
 public boolean onCreateOptionsMenu(Menu menu) { 
 
  menu.add(0,menu.FirsT,"今天"); 
  return super.onCreateOptionsMenu(menu); 
 } 
  
 /** 
  * 选择菜单 
  */ 
 @Override 
 public boolean onMenuItemSelected(int featureId,MenuItem item) { 
  switch (item.getItemId()){ 
  case Menu.FirsT: 
   //跳转到今天 
   int xMonth = jumpMonth; 
   int xYear = jumpYear; 
   int gvFlag =0; 
   jumpMonth = 0; 
   jumpYear = 0; 
   addGridView(); //添加一个gridView 
   year_c = Integer.parseInt(currentDate.split("-")[0]); 
   month_c = Integer.parseInt(currentDate.split("-")[1]); 
   day_c = Integer.parseInt(currentDate.split("-")[2]); 
   calV = new Calendaradapter(this,day_c); 
   gridView.setAdapter(calV); 
   addTextToTopTextView(topText); 
   gvFlag++; 
 
   break; 
  } 
  return super.onMenuItemSelected(featureId,item); 
 } 
  
 @Override 
 public boolean onTouchEvent(MotionEvent event) { 
 
  return this.gestureDetector.onTouchEvent(event); 
 } 
 
 @Override 
 public boolean onDown(MotionEvent e) { 
  // Todo Auto-generated method stub 
  return false; 
 } 
 
 @Override 
 public void onLongPress(MotionEvent e) { 
  // Todo Auto-generated method stub 
 
 } 
 
 @Override 
 public boolean onScroll(MotionEvent e1,float distanceX,float distanceY) { 
  // Todo Auto-generated method stub 
  return false; 
 } 
 
 @Override 
 public void onShowPress(MotionEvent e) { 
  // Todo Auto-generated method stub 
 } 
 
 @Override 
 public boolean onSingleTapUp(MotionEvent e) { 
  // Todo Auto-generated method stub 
  return false; 
 } 
  
 //添加头部的年份 闰哪月等信息 
 public void addTextToTopTextView(TextView view){ 
  StringBuffer textDate = new StringBuffer(); 
  textDate.append(calV.getShowYear()).append("年").append( 
    calV.getShowMonth()).append("月").append("\t"); 
  view.setText(textDate); 
  view.setTextColor(Color.WHITE); 
  view.setTypeface(Typeface.DEFAULT_BOLD); 
 } 
  
 //添加gridview 
 private void addGridView() { 
   
  gridView =(GridView)findViewById(R.id.gridview); 
 
  gridView.setonTouchListener(new OnTouchListener() { 
   //将gridview中的触摸事件回传给gestureDetector 
   @Override 
   public boolean onTouch(View v,MotionEvent event) { 
    // Todo Auto-generated method stub 
    return Calendaractivity.this.gestureDetector.onTouchEvent(event); 
   } 
  });    
   
  gridView.setonItemClickListener(new OnItemClickListener() { 
   //gridView中的每一个item的点击事件 
    
   @Override 
   public void onItemClick(AdapterView<?> arg0,View arg1,int position,long arg3) { 
     //点击任何一个item,得到这个item的日期(排除点击的是周日到周六(点击不响应)) 
     int startPosition = calV.getStartPositon(); 
     int endPosition = calV.getEndPosition(); 
     if(startPosition <= position+7 && position <= endPosition-7){ 
      String scheduleDay = calV.getDateByClickItem(position).split("\\.")[0]; //这一天的阳历 
      //String scheduleLunarDay = calV.getDateByClickItem(position).split("\\.")[1]; //这一天的阴历 
      String scheduleYear = calV.getShowYear(); 
      String scheduleMonth = calV.getShowMonth(); 
//     Toast.makeText(Calendaractivity.this,scheduleYear+"-"+scheduleMonth+"-"+scheduleDay,2000).show(); 
      ruzhuTime=scheduleMonth+"月"+scheduleDay+"日";      
      lidianTime=scheduleMonth+"月"+scheduleDay+"日";   
     Intent intent=new Intent(); 
     if(state.equals("ruzhu")) 
     { 
       
      bd.putString("ruzhu",ruzhuTime); 
      System.out.println("ruzhuuuuuu"+bd.getString("ruzhu")); 
     }else if(state.equals("lidian")){ 
       
      bd.putString("lidian",lidianTime); 
     } 
     intent.setClass(Calendaractivity.this,HotelActivity.class);     
     intent.putExtras(bd); 
     startActivity(intent); 
     finish(); 
     } 
     } 
    
  }); 
 } 
  
} 

源码下载。。。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

Django开发的应用程序中使用admin自带小控件(以实现日历功能的AdminDateWidget为例)

Django开发的应用程序中使用admin自带小控件(以实现日历功能的AdminDateWidget为例)

AdminDateWidget 简介

AdminDateWidget是admin自带的日历小控件,在admin应用程序中用于Datefield字段,其效果如下图所示:

屏幕快照 2017-03-31 下午3.37.45
AdminDateWidget位于django.contrib.admin.widgets.py中。

在其它应用程序中使用AdminDateWidget

使用AdminDateWidget需要修改form及模板。

修改form

首先,导入AdminDateWidget:
from django.contrib.admin.widgets import AdminDateWidget
然后,重设DateField字段的widget:

class TestForm(forms.Form):

    start_time = forms.DateField(widget=AdminDateWidget, label=''start time'')

修改模板

假设模板名称为history.html。
在history.html的head中,增加
{{ form.media }}
其中,form为views.py中定义的view返回值传递的TestForm实例,即:

def testwidget(request):
    form = TestForm()
    return render(request, ''myapp/history.html'', {''form'': form})

form.media可以被render渲染为:

<script type="text/javascript" src="/static/admin/js/calendar.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/DateTimeShortcuts.js"></script>


因此,也可以直接在head中增加上述两个JavaScript语句而不使用{{ form.media }}
要使上述两个语句实现功能,还需要以下CSS及JavaScript(放在上述两个语句之前)。

{% load static %}
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css" />
<script type="text/javascript" src="{% url ''admin:jsi18n'' %}"></script>
<script type="text/javascript" src="{% static ''admin/js/core.js'' %}"></script>
<script type="text/javascript" src="{% static ''admin/js/vendor/jquery/jquery.js'' %}"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
<script type="text/javascript" src="/static/admin/js/actions.js"></script>
<script type="text/javascript" src="/static/admin/js/vendor/xregexp/xregexp.js"></script>

即可实现功能。
 


备注:
本文html只实现了功能,不符合Django html模板语言设计规范。

 

Java JTable 实现日历的示例

Java JTable 实现日历的示例

这篇文章主要介绍了Java JTable 实现日历的示例,帮助大家更好的理解和学习Java jtable的使用方法,感兴趣的朋友可以了解下

效果图:

主要思想:日历最核心的功能就是能显示某年某月对应的日期和星期几。因此只要实现传入具体的年份和月份,得到一组存放了日期的数组a[ ]即可。其中数组的大小设置成42,要考虑的问题是当月的第一天对应星期几。日期数组中的前七个,肯定包含了当月的第一天,把这一天找到,将“1”填入,后面的日期依次累加直到加完该月最后一天为止。

MyCalendar类:

得到用于显示日期数组a[ ]

import java.util.Calendar; public class MyCalendar { String day[]; int year = 2020,month=0; public String[] getDay() { return day; } public void setDay(String[] day) { this.day = day; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } private boolean isLeapYear() { if(this.year%4==0 && this.year%100!=0){ return true; }else if(this.year%400==0){ return true; }else return false; } //获得显示数组 public String[] getCalendar(){ Calendar calendar=Calendar.getInstance(); String a[]=new String[42]; calendar.set(year,month-1,1); int weekday=calendar.get(Calendar.DAY_OF_WEEK)-1; int day=0; int days = 31; if (this.month == 4 || this.month == 6 || this.month == 9 || this.month == 11) days = 30; if (this.month == 2 && isLeapYear()) days = 29; if (this.month == 2 && !isLeapYear()) days = 28; for(int i = weekday,n=1;i

MyFrame类:

创造显示面板,主要用到JTable。

public class MyFrame extends JFrame implements ActionListener { //存储数据 MyCalendar calendar = new MyCalendar(); JComboBox choiceYear,choiceMonth; JTable table = null; JPanel root = new JPanel(); JLabel lyear, lmonth; private Object[] name = {"日","一","二","三","四","五","六"}; private TableModel tableModel = new DefaultTableModel(name,6); // private static int row = 6; // private static int column = 7; public MyFrame(String title) { super(title); this.setContentPane(root); root.setLayout(new BorderLayout()); //年月选择栏 choiceYear=new JComboBox(); choiceMonth=new JComboBox(); lyear=new JLabel("年"); lmonth=new JLabel("月 "); for(int i=1990;i rowData = new Vector(); int row = 0; int column = 0; for(int i = 0; i rowData = new Vector(); int row = 0; int column = 0; for(int i = 0; i rowData = new Vector(); int row = 0; int column = 0; for(int i = 0; i

ShowView类:

用于显示窗口,照抄即可,无需理解。

import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class ShowView { private static void createGUI() { // 语法:因为MyFrame是JFrame的子类,所以可以这么写 JFrame frame = new MyFrame("日历"); frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口的其他参数,如窗口大小 frame.setSize(400, 300); // 显示窗口 frame.setVisible(true); } public static void main(String[] args) { // 此段代码间接地调用了 createGUI() javax.swing.SwingUtilities.invokelater(new Runnable() { public void run() { createGUI(); } }); } }

以上就是Java JTable 实现日历的示例的详细内容,更多关于Java JTable 实现日历的资料请关注小编其它相关文章!

JavaScript快速实现日历效果

JavaScript快速实现日历效果

本文实例为大家分享了JavaScript快速实现日历效果的具体代码,供大家参考,具体内容如下

效果图

代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;

    }

    #calendar {
      background-color: #9900ff;
      color: #fff;
      border-radius: 5px;
      margin: 100px auto;
    }

    #title {
      font-size: 1.4em;
      padding: 4px 0.55em;
    }

    #days th {
      font-weight: bold;
      text-align: center;
      padding: 4px 0.55em;
    }

    #calendar td {
      text-align: center;
      padding: 4px 20px;
    }

    #today {
      color: #f00;
      font-weight: bold;
    }

    .poin {
      cursor: pointer;
      cursor: hand;
    }
  </style>
  <script>
    window.onload=function(){
      var form = document.getElementById(''calendar'');
      // 通过日历对象去调用自身的init方法
      calendar.init(form);
    }
    var calendar = {
      year: null,
      month: null,
      //日的数组
      dayTable: null,
      //初始化函数
      init(form) {
        // 1获取日数组
        this.dayTable=form.getElementsByTagName(''td'');
        //2创建日历,传入当前时间
        this.createCalendar(form,new Date());
        var nextMon=form.getElementsByTagName(''th'')[2];
        var preMon=form.getElementsByTagName(''th'')[0];
        preMon.onclick=function(){
        calendar.clearCalendar(form)
          var preDate=new Date(calendar.year,calendar.month-1,1);
          calendar.createCalendar(form,preDate)
        }
        nextMon.onclick=function(){
          calendar.clearCalendar(form)
          var nextDate=new Date(calendar.year,calendar.month+1,1);
          calendar.createCalendar(form,nextDate)
        }
      },
      //清除日历数据
      clearCalendar(form){
        var tds=form.getElementsByTagName(''td'');
        for (var i = 0; i < tds.length; i++) {
          tds[i].innerHTML=''&nbsp'';
          // 清除今天的样式
          tds[i].id='''';
        }
      },
      // 3生成日历
      // from table表格 date要创建的日期
      createCalendar(form,date){
        //获取此时的年份
         this.year=date.getFullYear(); 
         //获取此时的月份
         this.month=date.getMonth();

         //年份月份写入日历
         form.getElementsByTagName(''th'')[1].innerHTML = this.year+"年"+(this.month+1)+"月";
         //获取本月的天数
         var dataNum=this.getDateLen(this.year,this.month);
         var fristDay = this.getFristDay(calendar.year,calendar.month);
        // 循环将每一天的天数写入到日历中
        // 让i表示日期。
        for (var i = 1; i <= dataNum; i++) {
          this.dayTable[fristDay+i-1].innerHTML=i;
          var nowDate =new Date();
          if(i ==nowDate.getDate() && calendar.month ==nowDate.getMonth()&&calendar.year == nowDate.getFullYear()){
            //  将当期元素的id设置为today
            calendar.dayTable[i+fristDay-1].id = "today";
          }
        }
      },
       // 获取本月份的天数
       getDateLen(year,month){
        //获取下个月的第一天
        var nextMonth=new Date(year,month+1,1);
        // 设置下月第一天的小时-1,也就是上个月最后一天的小时数,随便减去一个值不要超过24小时
        nextMonth.setHours(nextMonth.getHours()-1);
        //获取此时下个月的日期,就是上个月最后一天.
        return nextMonth.getDate();
       },
       // 获取本月第一天为星期几。
      getFristDay:function(year,month){
        var fristDay=new Date(year,month,1);
        return fristDay.getDay();
      }
    } 
  </script>
</head>

<body>
  <table id="calendar">
    <tr>
      <!-- 向左箭头 -->
      <th>&lt;&lt;</th>
      <!-- 年月 -->
      <th id="title" colspan="5"></th>
      <!-- 向右箭头 -->
      <th>&gt;&gt;</th>
    </tr>
    <tr id="days">
      <th>日</th>
      <th>一</th>

      <th>二</th>
      <th>三</th>
      <th>四</th>
      <th>五</th>
      <th>六</th>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </table>

</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:
  • js css+html实现简单的日历
  • 轻量级的原生js日历插件calendar.js使用指南
  • JS学习之一个简易的日历控件
  • JS日历 推荐
  • Vue.js创建Calendar日历效果
  • 纯js简单日历实现代码
  • js编写当天简单日历效果【实现代码】
  • js日历控件(可精确到分钟)
  • php+javascript的日历控件
  • 简约JS日历控件 实例代码

关于java实现日历功能java实现简单的日历功能的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android使用GridView实现日历功能示例(详细代码)、Django开发的应用程序中使用admin自带小控件(以实现日历功能的AdminDateWidget为例)、Java JTable 实现日历的示例、JavaScript快速实现日历效果的相关信息,请在本站寻找。

本文标签: