JAVA Swing万年历

/**
*将每个月的日历返回二维数组
*/public class Dates2 {public static String [][] weekday(int y,int m){  int [] monthDay={31,28,31,30,31,30,31,31,30,31,30,31};int weekOfDay=Week.dateToWeek(Integer.toString(y)+"-"+Integer.toString(m)+"-01");String[][] days=new String[6][7];//将余数转换为个数int countYs=0;if(weekOfDay>0 &&weekOfDay<=6){for (int i = 0; i < weekOfDay - 1; i++) {//System.out.print("\t\t\t");days[0][i]="\t\t\t";countYs+=1;}}else if(weekOfDay==0){for (int j = 0; j <6; j++) {//System.out.print("\t\t\t");days[0][j]="\t\t\t";countYs+=1;}}for (int k = 0; k < monthDay[m-1]; k++) {String day=((k+1)+"["+ChinaDate.oneDay2(y,m,k+1)+"]\t\t");//把日历信息放到二维数组中即可//(k+countYS)/7=行号 %7=列号days[(k+countYs)/7][(k+countYs)%7]=day;}return  days;}
}```java
//输出实时的时间 年月日以及农历
import java.text.SimpleDateFormat;
import java.util.Date;class NowTime {static String Now(){// System.out.println( chinaDate.today());SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss");String otime=time.format(new Date());//System.out.println(otime);return ChinaDate.today()+"\t"+otime;}
}
/**
*返回某月的第一天星期几
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class Week {public static  int dateToWeek(String datetime) {SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");//String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };Calendar cal = Calendar.getInstance(); // 获得一个日历Date datet = null;try {datet = f.parse(datetime);cal.setTime(datet);} catch (ParseException e) {e.printStackTrace();}int w = cal.get(Calendar.DAY_OF_WEEK) -1; // 指示一个星期中的某天。return w;}
}

/**
*农历工具类,此类参考了别人的博客
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;public class ChinaDate {final private static long[] lunarInfo = new long[] { 0x04bd8, 0x04ae0,0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0,0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540,0x0d6a0, 0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5,0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3,0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0,0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0,0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8,0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570,0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5,0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0,0x195a6, 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50,0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, 0x064b0,0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0,0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7,0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50,0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954,0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260,0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0,0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, 0x056d0,0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20,0x0ada0 };final private static int[] year20 = new int[] { 1, 4, 1, 2, 1, 2, 1, 1, 2,1, 2, 1 };final private static int[] year19 = new int[] { 0, 3, 0, 1, 0, 1, 0, 0, 1,0, 1, 0 };final private static int[] year2000 = new int[] { 0, 3, 1, 2, 1, 2, 1, 1,2, 1, 2, 1 };public final static String[] nStr1 = new String[] { "", "正", "二", "三", "四","五", "六", "七", "八", "九", "十", "冬", "腊" };private final static String[] Gan = new String[] { "甲", "乙", "丙", "丁", "戊","己", "庚", "辛", "壬", "癸" };private final static String[] Zhi = new String[] { "子", "丑", "寅", "卯", "辰","巳", "午", "未", "申", "酉", "戌", "亥" };private final static String[] Animals = new String[] { "鼠", "牛", "虎", "兔","龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };private final static String[] solarTerm = new String[] { "小寒", "大寒", "立春","雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑","立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" };private final static String[] sFtv = new String[] { "0101*元旦", "0214 情人节","0308 妇女节", "0312 植树节", "0315 消费者权益日", "0401 愚人节", "0501 劳动节","0504 青年节", "0512 护士节", "0601 儿童节", "0701 建党节", "0801 建军节","0808 父亲节", "0909 mzd逝世纪念", "0910 教师节", "0928 孔子诞辰", "1001*国庆节","1006 老人节", "1024 联合国日", "1112 孙中山诞辰", "1220 澳门回归", "1225 圣诞节","1226 mzd诞辰" };private final static String[] lFtv = new String[] { "0101*农历春节","0115 元宵节", "0505 端午节", "0707 七夕情人节", "0815 中秋节", "0909 重阳节","1208 腊八节", "1224 小年", "0100*除夕" };/*** 传回农历 y年的总天数** @param y* @return*/final private static int lYearDays(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年闰月的天数** @param y* @return*/final private static int leapDays(int y) {if (leapMonth(y) != 0) {if ((lunarInfo[y - 1900] & 0x10000) != 0)return 30;elsereturn 29;} elsereturn 0;}/*** 传回农历 y年闰哪个月 1-12 , 没闰传回 0** @param y* @return*/final private static int leapMonth(int y) {return (int) (lunarInfo[y - 1900] & 0xf);}/*** 传回农历 y年m月的总天数** @param y* @param m* @return*/final private static int monthDays(int y, int m) {if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0)return 29;elsereturn 30;}/*** 传回农历 y年的生肖** @param y* @return*/final public static String AnimalsYear(int y) {return Animals[(y - 4) % 12];}/*** 传入 月日的offset 传回干支,0=甲子** @param num* @return*/final private static String cyclicalm(int num) {return (Gan[num % 10] + Zhi[num % 12]);}/*** 传入 offset 传回干支, 0=甲子** @param y* @return*/final public static String cyclical(int y) {int num = y - 1900 + 36;return (cyclicalm(num));}/*** 传出农历.year0 .month1 .day2 .yearCyl3 .monCyl4 .dayCyl5 .isLeap6** @param y* @param m* @return*/final private long[] Lunar(int y, int m) {long[] nongDate = new long[7];int i = 0, temp = 0, leap = 0;Date baseDate = new GregorianCalendar(1900 + 1900, 1, 31).getTime();Date objDate = new GregorianCalendar(y + 1900, m, 1).getTime();long offset = (objDate.getTime() - baseDate.getTime()) / 86400000L;if (y < 2000)offset += year19[m - 1];if (y > 2000)offset += year20[m - 1];if (y == 2000)offset += year2000[m - 1];nongDate[5] = offset + 40;nongDate[4] = 14;for (i = 1900; i < 2050 && offset > 0; i++) {temp = lYearDays(i);offset -= temp;nongDate[4] += 12;}if (offset < 0) {offset += temp;i--;nongDate[4] -= 12;}nongDate[0] = i;nongDate[3] = i - 1864;leap = leapMonth(i); // 闰哪个月nongDate[6] = 0;for (i = 1; i < 13 && offset > 0; i++) {// 闰月if (leap > 0 && i == (leap + 1) && nongDate[6] == 0) {--i;nongDate[6] = 1;temp = leapDays((int) nongDate[0]);} else {temp = monthDays((int) nongDate[0], i);}// 解除闰月if (nongDate[6] == 1 && i == (leap + 1))nongDate[6] = 0;offset -= temp;if (nongDate[6] == 0)nongDate[4]++;}if (offset == 0 && leap > 0 && i == leap + 1) {if (nongDate[6] == 1) {nongDate[6] = 0;} else {nongDate[6] = 1;--i;--nongDate[4];}}if (offset < 0) {offset += temp;--i;--nongDate[4];}nongDate[1] = i;nongDate[2] = offset + 1;return nongDate;}final public static long[] calElement(int y, int m, int d) {long[] nongDate = new long[7];int i = 0, temp = 0, leap = 0;Date baseDate = new GregorianCalendar(0 + 1900, 0, 31).getTime();Date objDate = new GregorianCalendar(y, m - 1, d).getTime();long offset = (objDate.getTime() - baseDate.getTime()) / 86400000L;nongDate[5] = offset + 40;nongDate[4] = 14;for (i = 1900; i < 2050 && offset > 0; i++) {temp = lYearDays(i);offset -= temp;nongDate[4] += 12;}if (offset < 0) {offset += temp;i--;nongDate[4] -= 12;}nongDate[0] = i;nongDate[3] = i - 1864;leap = leapMonth(i); // 闰哪个月nongDate[6] = 0;for (i = 1; i < 13 && offset > 0; i++) {// 闰月if (leap > 0 && i == (leap + 1) && nongDate[6] == 0) {--i;nongDate[6] = 1;temp = leapDays((int) nongDate[0]);} else {temp = monthDays((int) nongDate[0], i);}// 解除闰月if (nongDate[6] == 1 && i == (leap + 1))nongDate[6] = 0;offset -= temp;if (nongDate[6] == 0)nongDate[4]++;}if (offset == 0 && leap > 0 && i == leap + 1) {if (nongDate[6] == 1) {nongDate[6] = 0;} else {nongDate[6] = 1;--i;--nongDate[4];}}if (offset < 0) {offset += temp;--i;--nongDate[4];}nongDate[1] = i;nongDate[2] = offset + 1;return nongDate;}public final static String getChinaDate(int day) {String a = "";if (day == 10)return "初十";if (day == 20)return "二十";if (day == 30)return "三十";int two = (int) ((day) / 10);if (two == 0)a = "初";if (two == 1)a = "十";if (two == 2)a = "廿";if (two == 3)a = "三";int one = (int) (day % 10);switch (one) {case 1:a += "一";break;case 2:a += "二";break;case 3:a += "三";break;case 4:a += "四";break;case 5:a += "五";break;case 6:a += "六";break;case 7:a += "七";break;case 8:a += "八";break;case 9:a += "九";break;}return a;}public static String today() {Calendar today = Calendar.getInstance(Locale.SIMPLIFIED_CHINESE);int year = today.get(Calendar.YEAR);int month = today.get(Calendar.MONTH) + 1;int date = today.get(Calendar.DATE);long[] l = calElement(year, month, date);StringBuffer sToday = new StringBuffer();try {sToday.append(sdf.format(today.getTime()));sToday.append(" 农历");sToday.append(cyclical(year));sToday.append('(');sToday.append(AnimalsYear(year));sToday.append(")年");sToday.append(nStr1[(int) l[1]]);sToday.append("月");sToday.append(getChinaDate((int) (l[2])));return sToday.toString();} finally {sToday = null;}}private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 EEEEE");public static String oneDay(int year,int month,int day) {Calendar today = Calendar.getInstance(Locale.SIMPLIFIED_CHINESE);long[] l = calElement(year, month, day);StringBuffer sToday = new StringBuffer();try {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date date = null;String str = Integer.toString(year)+"-"+Integer.toString(month)+"-"+Integer.toString(day);try {date = format.parse(str);// System.out.println(date);} catch (ParseException e) {e.printStackTrace();}sToday.append(sdf.format(date));//sToday.append(sdf.format(today.getTime()));sToday.append(" 农历");sToday.append(cyclical(year));sToday.append('(');sToday.append(AnimalsYear(year));sToday.append(")年");sToday.append(nStr1[(int) l[1]]);sToday.append("月");sToday.append(getChinaDate((int) (l[2])));return sToday.toString();} finally {sToday = null;}}public static String oneDay2(int year,int month,int day) {Calendar today = Calendar.getInstance(Locale.SIMPLIFIED_CHINESE);long[] l = calElement(year, month, day);StringBuffer sToday = new StringBuffer();try {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date date = null;String str = Integer.toString(year)+"-"+Integer.toString(month)+"-"+Integer.toString(day);try {date = format.parse(str);// System.out.println(date);} catch (ParseException e) {e.printStackTrace();}//sToday.append(sdf.format(date));//sToday.append(sdf.format(today.getTime()));if(getChinaDate((int) (l[2])).equals("初一")){sToday.append(nStr1[(int) l[1]]);sToday.append("月");}else if(nStr1[(int) l[1]].equals("腊")&&getChinaDate((int) (l[2])).equals("三十")){sToday.append("除夕");}else{sToday.append(getChinaDate((int) (l[2])));}// sToday.append(getChinaDate((int) (l[2])));return sToday.toString();} finally {sToday = null;}}public static void main(String[] args) {int [] month={31,28,31,30,31,30,31,31,30,31,30,31};int count=0;for (int i = 1; i <= 12; i++) {for (int j = 1; j <= month[i-1]; j++) {// System.out.print(i+"-"+j+"\t");System.out.println(oneDay2(2018,i,j));}}}}
/**
*界面化
*/
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;public class Ui {public static void main(String[] args)  {//throws InterruptedException//得到当前的年份和月份,后期会用到Calendar cale = null;cale = Calendar.getInstance();final int[] year = {cale.get(Calendar.YEAR)};final int[] month = {cale.get(Calendar.MONTH) + 1};System.out.println(year[0]);System.out.println(month[0]);JFrame jf=new JFrame("万年历20181203【作者个人网站:www.lsk1998.xyz】注意:此万年历目前只在1900-2050年有效");jf.setSize(700,400);jf.setResizable(false);jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);JPanel panel=new JPanel(null);JTextField jTextField=new JTextField();JLabel jLabel1=new JLabel(year[0] +"年"+ month[0] +"月");//实时的年份/月份jLabel1.setFont(new Font(null,Font.PLAIN,18));JButton jButton1=new JButton("↑");//上一月jButton1.setFont(new Font(null,Font.PLAIN,18));JButton jButton2=new JButton("↓");//下一月jButton2.setFont(new Font(null,Font.PLAIN,18));JLabel jLabel2=new JLabel("输入年份");//年份的标签jLabel2.setFont(new Font(null,Font.PLAIN,15));JTextField jTextField1=new JTextField();//输入年份JLabel jLabel3=new JLabel("输入月份");//月份的标签jLabel3.setFont(new Font(null,Font.PLAIN,15));JTextField jTextField2=new JTextField();//输入月份JButton jButton3=new JButton("跳转到该月");//开始按钮jButton3.setFont(new Font(null,Font.PLAIN,15));String[] weekDays = { "星期一\t\t", "星期二\t\t", "星期三\t\t", "星期四\t\t", "星期五\t\t", "星期六\t\t", "星期日\t\t" };String[][] testdays=Dates2.weekday(2018,12);jTextField.setText(NowTime.Now());jTextField.setFont(new Font(null,Font.PLAIN,22));JTable table=new JTable(testdays,weekDays);table.getTableHeader().setReorderingAllowed(false);   //不可整列移动table.getTableHeader().setResizingAllowed(false);   //不可拉动表格jTextField.setBounds(0,0,700,50);jLabel1.setBounds(0,50,100,50);jButton1.setBounds(100,50,50,50);jButton2.setBounds(150,50,50,50);jLabel2.setBounds(200,50,85,50);jTextField1.setBounds(285,50,110,50);jLabel3.setBounds(395,50,85,50);jTextField2.setBounds(470,50,110,50);jButton3.setBounds(580,50,120,50);table.getTableHeader().setBounds(0,100,700,50);table.setBounds(0,150,700,350);table.setRowHeight(35);table.setFont(new Font(null,Font.PLAIN,18));jf.setVisible(true);jButton3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {year[0]=Integer.parseInt(jTextField1.getText());month[0]=Integer.parseInt(jTextField2.getText());jLabel1.setText(year[0]+"年"+month[0]+"月");table.setModel(new DefaultTableModel(Dates2.weekday(year[0],month[0]),weekDays));System.out.println(year[0]);System.out.println(month[0]);}});//上一月功能jButton1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if(month[0]==1){year[0]-=1;month[0]=12;jLabel1.setText(year[0] + "年" + (month[0] ) + "月");table.setModel(new DefaultTableModel(Dates2.weekday(year[0], month[0] ), weekDays));}else{month[0]-=1;jLabel1.setText(year[0] + "年" + (month[0] ) + "月");table.setModel(new DefaultTableModel(Dates2.weekday(year[0], month[0] ), weekDays));}System.out.println(year[0]+"年"+(month[0] )+"月");}});//下一月功能jButton2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if(month[0]<12){month[0] +=1;jLabel1.setText(year[0] + "年" + (month[0] ) + "月");table.setModel(new DefaultTableModel(Dates2.weekday(year[0], month[0] ), weekDays));}else{year[0]+=1;month[0]=1;jLabel1.setText(year[0] + "年" + (month[0] ) + "月");table.setModel(new DefaultTableModel(Dates2.weekday(year[0], month[0] ), weekDays));}System.out.println(year[0]+"年"+(month[0] )+"月");}});//设置文本框内容:当前的时间和日期panel.add(jTextField);panel.add(jLabel1);panel.add(jButton1);panel.add(jButton2);panel.add(jLabel2);panel.add(jTextField1);panel.add(jLabel3);panel.add(jTextField2);panel.add(jButton3);panel.add(table.getTableHeader());panel.add(table);jf.add(panel);while(true){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}jTextField.setText(NowTime.Now());}}}


JAVA Swing万年历相关推荐

  1. 基于Java Swing 的万年历

    一.项目概要:         基于Java  Swing 万年历,可以查看当前日期.下个月.下一年的信息,以及星期信息. 二.源码获取: 有需要可以直接点击下载.点击下载 如有技术咨询可联系QQ:5 ...

  2. Java项目:日历万年历(java+swing)

    源码获取:博客首页 "资源" 里下载! 功能简介: 万年历 启动类: public class CalendarMainClass { public static void mai ...

  3. java 简单万年历_java简单万年历

    Java万年历源代码_幼儿读物_幼儿教育_教育专区.. import java.awt.*; import java.awt.event.*; import javax.swing.*; import ...

  4. java打印输出万年历_Java基础之打印万年历的简单实现(案例)

    Java基础之打印万年历的简单实现(案例) 问题:输入年,月,打印对应年月的日历. 示例: 问题分析: 1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星 ...

  5. JAVA线程万年历(阳历+阴历+节日+时间)

    JAVA线程万年历(阳历+阴历+节日+时间) package myCalendar;import java.awt.Canvas; import java.awt.Color; import java ...

  6. Java项目:潜艇大战项目(java+swing)

    源码获取:博客首页 "资源" 里下载! 功能简介: Java swing实现的一款小游戏潜艇大战的项目源码 游戏界面: @SuppressWarnings({ "unus ...

  7. java布局工具,Java Swing:库,工具,布局管理器

    What libraries/tools do you have in your Java Swing Tool set? XUL Layout Managers Packagers/Installe ...

  8. java swing 文件选择,设置默认文件选择路径,桌面路径

    在上传文件,选择文件的时候,往往会遇到路径选择的问题,比如,一般上传的默认路径是 我的文档,而我们恰好需要默认在桌面,那怎么办呢? 下面的内容也许会帮到你! 首先,看java swing 方面,使用 ...

  9. java swing原理浅析

    2019独角兽企业重金招聘Python工程师标准>>> 没有接触过ui编程的人在学习ui编程时可能会对ui组件和各组件间的关系有点混乱,下面笔者就java swing的原理做下简单分 ...

  10. 使用javaHelp制作java swing帮助文档

    使用javaHelp制作java swing帮助文档 最近在做一个Swing项目,项目接近尾声,需要做最后的帮助系统了.就想到了javaHelp.JavaHelp是sun退出的编写帮助系统的一个类库, ...

最新文章

  1. silverlight数据库应用程序开发
  2. 赵劲松:预知潜在风险,做化工安全科技创新的引领者
  3. mysql memory_MySQL MEMORY 引擎及性能比对
  4. SCSE 21fall 课程
  5. VTK:线性单元用法实战
  6. Web server调研分析
  7. python安装mysql数据库_windows10安装mysql-8.0.13(zip安装)~Python安装mysql
  8. linux下源码安装官方最新版Python
  9. ICCV 2021 oral 重构+预测,双管齐下提升视频异常检测性能
  10. 深度学习制作数据集的部分代码实现(解压zip、生成json文件)
  11. linux命令行启动向日葵无法编辑,向日葵linux版无法启动
  12. 计算机审计实验一计划阶段,审计实验1.ppt
  13. Javascript实现视频文件播放功能
  14. 趣味小游戏——井字棋
  15. 计算机相关美文摘抄,写景美文摘抄
  16. 生成对抗网络——GAN(一)
  17. R使用LASSO回归预测股票收益
  18. 率先断供华为,Google现在后悔了
  19. 《良乔说软件》第一回 问君情深深几许?我的眼里只有你
  20. 魔法王座微端不显示服务器,魔法王座无法登陆卡顿等常见问题解决方法

热门文章

  1. 求急!!谁会写接口测试,拜托了各位大佬,跪求!!我感激不尽,好好报答他
  2. CURL -w 参数详解
  3. vb中的print方法
  4. 阿里巴巴正式宣布5.4亿现金战略投资中国万网
  5. Edge浏览器中使用IE浏览器网站
  6. 流量计算机常见故障,流量计40个常见故障、处理方法!多数人看完就收藏
  7. 5000张高清壁纸大图(手机用),用Python在法律的边缘又试探了一把
  8. 解决IE11兼容HTML5 设置
  9. texture_laws 纹理滤波用于缺陷检测
  10. java 指针时钟_java script 的指针式时钟怎么写