❶ java中日歷類(CalendarClass)的用途
Java中日歷類(Calendar類)的用途如下:
Calendar類的靜態方法getInstance()可以初始化一個日歷對象:Calendar now = Calendar.getInstance();
可以使用下面三個方法把日歷定到任何一個時間:
set(intyear,intmonth,intdate);
set(intyear,intmonth,intdate,inthour,intminute);
set(intyear,intmonth,intdate,inthour,intminute,intsecond);
如果想獲得年份、月份、小時等信息可以使用:
Now.get(Calendar.Month);//這樣的方法0表示一月,1表示二月
get(Calendar.DAY_OF_MONTH);//獲得這個月的第幾天
get(Calendar.DAY_OF_WEEK);//獲得這個星期的第幾天
get(Calendar.DAY_OF_YEAR);//獲得這個年的第幾天
getTimeMillis();//獲得當前時間的毫秒錶示
1.計算某一月份的最大天數
Calendartime=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);//注意,Calendar對象默認一月為0
intday=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天數
註:在使用set方法之前,必須先clear一下,否則很多信息會繼承自系統當前時間
2.Calendar和Date的轉化
(1) Calendar轉化為Date
Calendarcal=Calendar.getInstance();
Datedate=cal.getTime();
(2) Date轉化為Calendar
Datedate=newDate();
Calendarcal=Calendar.getInstance();
cal.setTime(date);
3.格式化輸出日期時間
Datedate=newDate();
SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");
System.out.println(df.format(date));
4.計算相隔天數的方法
publicintgetDaysBetween(Calendard1,Calendard2){
if(d1.after(d2)){//
java.util.Calendarswap=d1;
d1=d2;
d2=swap;
}
intdays=d2.get(Calendar.DAY_OF_YEAR)-d1.get(Calendar.DAY_OF_YEAR);
inty2=d2.get(Calendar.YEAR);
if(d1.get(Calendar.YEAR)!=y2){
d1=(Calendar)d1.clone();
do{
days+=d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到當年的實際天數
d1.add(Calendar.YEAR,1);
}while(d1.get(Calendar.YEAR)!=y2);
}
returndays;
}
❷ java中的Calendar.DATE和Calendar.DAY_OF_MONTH有什麼區別
Calendar.DATE: 獲取日期,包含年月日。
Calendar.DAY_OF_MONTH :獲取月份中的某一天。
❸ java中的Calendar如何使用的
package pack.java.calendar.demo;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class CalendarDemo {
private static SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
public static void main(String[] args) {
//獲取calendar實例;
Calendar calendar = Calendar.getInstance();
//判斷calendar是不是GregorianCalendar類的實例;
if(calendar instanceof GregorianCalendar){
System.out.println("屬於GregorianCalendar類的實例!");
}
//從calendar對象中獲得date對象,當前時間;
Date dates = calendar.getTime();
//格式化時間;
String date_str= date_format.format(dates);
System.out.println(date_str);
//設置月份05;代表日歷的月份6月,因為月份從0開始。
calendar.set(Calendar.MONTH, 05);
int months = calendar.get(Calendar.MONTH);
System.out.println(months); //輸出05;
//設置日期為2011-07-24 09:59:50
calendar.set(2011, 06, 24, 9, 59, 50);
String getDate = date_format.format(calendar.getTime());
System.out.println(getDate); //輸出2011-07-24 09:59:50;
//比較日前大小;
if(new Date().getTime() > calendar.getTimeInMillis()){
System.out.println("當前日期在後!");
}else{
System.out.println("當前日期在前!");
}
//設置當前時間為:2011-07-24 11:06:00
calendar.setTime(new Date());
int year = calendar.get(Calendar.YEAR); //獲取年;
int month = calendar.get(Calendar.MONTH); //獲取月;
int date = calendar.get(Calendar.DATE); //獲取天;
int hour = calendar.get(Calendar.HOUR); //獲取小時;
int minute = calendar.get(Calendar.MINUTE); //獲取分鍾;
int second = calendar.get(Calendar.SECOND); //獲取秒鍾;
int hour_of_day = calendar.get(Calendar.HOUR_OF_DAY); //第幾個小時,
int day_of_month = calendar.get(Calendar.DAY_OF_MONTH); //這天,在一個月內是第幾天.
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); //這天,在一周內,是第幾天.
int day_of_year = calendar.get(Calendar.DAY_OF_YEAR); //這天,在一年內,是第幾天。
int week_of_year = calendar.get(Calendar.WEEK_OF_YEAR); //這周,在一年內是第幾周;
int week_of_month = calendar.get(Calendar.WEEK_OF_MONTH);//這周,在這個月是第幾周;以以星為標准;
int zone_offset = calendar.get(Calendar.ZONE_OFFSET); //獲取時區;
int day_of_week_in_month = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH); //某月中第幾周,按這個月1號算,1號起就是第1周,8號起就是第2周。以月份天數為標准
int r = calendar.get(Calendar.AM_PM);
if(r==calendar.AM){
System.out.println("現在是上午");
}
if(r==calendar.PM){
System.out.println("現在是下午");
}
System.out.println("==================================================");
System.out.println(year);
System.out.println(month);
System.out.println(date);
System.out.println(hour);
System.out.println(minute);
System.out.println(second);
System.out.println(hour_of_day);
System.out.println(day_of_month);
System.out.println(day_of_week);
System.out.println(day_of_year);
System.out.println(week_of_year);
System.out.println(week_of_month);
System.out.println(zone_offset);
System.out.println(day_of_week_in_month);
}
}
❹ java中calender怎麼實現重寫add方法
public class calenderI extends Calendar{
@Override
public void add(int arg0, int arg1) {
// TODO Auto-generated method stub
}
❺ java 如何用calendar類生成萬年歷
以下是兩個類,請樓主分別存成兩個java文件:
其中
MainFrame.java是顯示日歷程序,Clock.java是日歷計算程序。編譯後運行MainFrame這個類即可。
1.MainFrame.java
---
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.Calendar;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MainFrame extends JFrame {
/** *//**
*
*/
private static final long serialVersionUID = 1L;
JPanel panel = new JPanel(new BorderLayout());
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel(new GridLayout(7, 7));
JPanel panel3 = new JPanel();
JLabel[] label = new JLabel[49];
JLabel y_label = new JLabel("年份");
JLabel m_label = new JLabel("月份");
JComboBox com1 = new JComboBox();
JComboBox com2 = new JComboBox();
int re_year, re_month;
int x_size, y_size;
String year_num;
Calendar now = Calendar.getInstance(); // 實例化Calendar
MainFrame() {
super("萬年歷");
setSize(300, 350);
x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight());
setLocation((x_size - 300) / 2, (y_size - 350) / 2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.add(y_label);
panel1.add(com1);
panel1.add(m_label);
panel1.add(com2);
for (int i = 0; i < 49; i++) {
label[i] = new JLabel("", JLabel.CENTER);// 將顯示的字元設置為居中
panel2.add(label[i]);
}
panel3.add(new Clock(this));
panel.add(panel1, BorderLayout.NORTH);
panel.add(panel2, BorderLayout.CENTER);
panel.add(panel3, BorderLayout.SOUTH);
panel.setBackground(Color.white);
panel1.setBackground(Color.white);
panel2.setBackground(Color.white);
panel3.setBackground(Color.white);
Init();
com1.addActionListener(new ClockAction());
com2.addActionListener(new ClockAction());
setContentPane(panel);
setVisible(true);
setResizable(false);
}
class ClockAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
int c_year, c_month, c_week;
c_year = Integer.parseInt(com1.getSelectedItem().toString()); // 得到當前所選年份
c_month = Integer.parseInt(com2.getSelectedItem().toString()) - 1; // 得到當前月份,並減1,計算機中的月為0-11
c_week = use(c_year, c_month); // 調用函數use,得到星期幾
Resetday(c_week, c_year, c_month); // 調用函數Resetday
}
}
public void Init() {
int year, month_num, first_day_num;
String log[] = { "日", "一", "二", "三", "四", "五", "六" };
for (int i = 0; i < 7; i++) {
label[i].setText(log[i]);
}
for (int i = 0; i < 49; i = i + 7) {
label[i].setForeground(Color.red); // 將星期日的日期設置為紅色
}
for (int i = 6; i < 49; i = i + 7) {
label[i].setForeground(Color.green);// 將星期六的日期設置為綠色
}
for (int i = 1; i < 10000; i++) {
com1.addItem("" + i);
}
for (int i = 1; i < 13; i++) {
com2.addItem("" + i);
}
month_num = (int) (now.get(Calendar.MONTH)); // 得到當前時間的月份
year = (int) (now.get(Calendar.YEAR)); // 得到當前時間的年份
com1.setSelectedIndex(year - 1); // 設置下拉列表顯示為當前年
com2.setSelectedIndex(month_num); // 設置下拉列表顯示為當前月
first_day_num = use(year, month_num);
Resetday(first_day_num, year, month_num);
}
public int use(int reyear, int remonth) {
int week_num;
now.set(reyear, remonth, 1); // 設置時間為所要查詢的年月的第一天
week_num = (int) (now.get(Calendar.DAY_OF_WEEK));// 得到第一天的星期
return week_num;
}
@SuppressWarnings("deprecation")
public void Resetday(int week_log, int year_log, int month_log) {
int month_day_score; // 存儲月份的天數
int count;
month_day_score = 0;
count = 1;
Date date = new Date(year_log, month_log + 1, 1); // now
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, -1); // 前個月
month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 最後一天
for (int i = 7; i < 49; i++) { // 初始化標簽
label[i].setText("");
}
week_log = week_log + 6; // 將星期數加6,使顯示正確
month_day_score = month_day_score + week_log;
for (int i = week_log; i < month_day_score; i++, count++) {
label[i].setText(count + "");
}
}
public static void main(String[] args) {
JFrame.(true);
new MainFrame();
}
}
2.Clock.java
-----
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.Calendar;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
//顯示時間的類:Clock
/** *//**
* Clock.java
* Summary 數字時間顯示
* Created on
* @author
* remark
*/
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util.Calendar;
class Clock extends Canvas implements Runnable{
/** *//**
*
*/
private static final long serialVersionUID = 3660124045489727166L;
MainFrame mf;
Thread t;
String time;
public Clock(MainFrame mf){
this.mf=mf;
setSize(280,40);
setBackground(Color.white);
t=new Thread(this); //實例化線程
t.start(); //調用線程
}
public void run(){
while(true){
try{
Thread.sleep(1000); //休眠1秒鍾
}catch(InterruptedException e){
System.out.println("異常");
}
this.repaint(100);
}
}
public void paint(Graphics g){
Font f=new Font("宋體",Font.BOLD,16);
SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化時間顯示類型
Calendar now=Calendar.getInstance();
time=SDF.format(now.getTime()); //得到當前日期和時間
g.setFont(f);
g.setColor(Color.orange);
g.drawString(time,45,25);
}
}
❻ java 中Calendar.getInstance() 實現的是什麼
java中calendar.getinstance()和new
date()的差別如下:
calendar.getinstance()是獲取一個calendar對象並可以進行時間的計算,時區的指定
new
date()是創建了一個date對象,默認是utc格式的。
二者可以相互轉化:
calendar
calendar
=
calendar.getinstance();
//
從一個
calendar
對象中獲取
date
對象
date
date
=
calendar.gettime();
//
將
date
對象反應到一個
calendar
對象中,
//
calendar/gregoriancalendar
沒有構造函數可以接受
date
對象
//
所以我們必需先獲得一個實例,然後設置
date
對象
calendar.settime(date);
❼ java Calendar類是如何獲取實例的
你想說什麼?createCalendar()肯定是根據時區和語言環境來創建Calendar的。sun.util.BuddhistCalendar這個類src.zip沒有給源碼,但是有這句話就夠了:
public class sun.util.BuddhistCalendar extends java.util.GregorianCalendar。
因為GregorianCalendar是Calender的子類,所以sun.util.BuddhistCalendar也是Calendar的子類了。(至於具體的實現,java底層封裝好了的)
如果獲取的是子類對象的話return new sun.util.BuddhistCalendar(zone, aLocale);
怎麼解釋 ?
什麼怎麼解釋?難道不能返回子類對象?這是一個多態啊,不會不理解多態嘛。我返回了父類對象,就調用父類的方法即可了,Calendar類的什麼方法都能使用。應該是你多態不過關吧。
❽ 求java中Calendar類的用法例子(並附每條注釋)
Calendar類(理解)
Calendar類是採用手工的方式取得日期,可以通過此類精確到毫秒,此類的定義如下:
public abstract class Calendar extends Object
implements Serializable, Cloneable, Comparable<Calendar>
這個類本身是一個抽象類,抽象類要想實例化肯定使用子類:GregorianCalendar
package org.lxh.api.datedemo;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarDemo {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar();
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + (calendar.get(Calendar.MONTH) + 1));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out
.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out
.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
}
}
但是現在有一個問題,如果每次取時間都按照這種方式取的話,那麼得累死,那麼能不能設計一個類,可以通過此
類直接取得時間呢,例如:現在給出了如下的一個介面:
package org.lxh.api.datedemo;
public interface DateTime {
/**
*取得日期
* @return 日期的字元串,例如:2009-12-22
*/
public String getDate() ;
/**
*取得日期時間
* @return 日期時間的字元串,例如:2009-12-22 11:06:23.345
*/
public String getDateTime() ;
/**
*取得時間戳
* @return 返回時間戳的字元串,例如:20091222110623345
*/
public String getTimeStamp() ;
}
前面需要補0的問題需要注意,例如:01。
package org.lxh.api.datedemo;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class DateTimeImpl implements DateTime {
private Calendar calendar;
public DateTimeImpl() {
this.calendar = new GregorianCalendar();
}
public String getDate() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR)).append("-");
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append("-");
buf.append(this.addZero(calendar.get(Calendar.DATE), 2));
return buf.toString();
}
public String getDateTime() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR)).append("-");
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2)).append("-");
buf.append(this.addZero(calendar.get(Calendar.DATE), 2)).append(" ");
buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2)).append(":") ;
buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)).append(":") ;
buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)).append(".") ;
buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;
return buf.toString();
}
@Override
public String getTimeStamp() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR));
buf.append(this.addZero((calendar.get(Calendar.MONTH) + 1), 2));
buf.append(this.addZero(calendar.get(Calendar.DATE), 2));
buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2));
buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)) ;
buf.append(this.addZero(calendar.get(Calendar.SECOND), 2)) ;
buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3)) ;
return buf.toString();
}
private String addZero(int num, int len) {
StringBuffer buf = new StringBuffer();
buf.append(num);
while (buf.length() < len) {
buf.insert(0, 0);
}
return buf.toString();
}
}
❾ java中的calendar類主要有那些方法
abstract void add(int field, int amount)
根據日歷的規則,為給定的日歷欄位添加或減去指定的時間量。
boolean after(Object when)
判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之後,返回判斷結果。
boolean before(Object when)
判斷此 Calendar 表示的時間是否在指定 Object 表示的時間之前,返回判斷結果。
void clear()
將此 Calendar 的所日歷欄位值和時間值(從歷元至現在的毫秒偏移量)設置成未定義。
void clear(int field)
將此 Calendar 的給定日歷欄位值和時間值(從歷元至現在的毫秒偏移量)設置成未定義。
Object clone()
創建並返回此對象的一個副本。
int compareTo(Calendar anotherCalendar)
比較兩個 Calendar 對象表示的時間值(從歷元至現在的毫秒偏移量)。
protected void complete()
填充日歷欄位中所有未設置的欄位。
protected abstract void computeFields()
將當前毫秒時間值 time 轉換為 fields[] 中的日歷欄位值。
protected abstract void computeTime()
將 fields[] 中的當前日歷欄位值轉換為毫秒時間值 time。
boolean equals(Object obj)
將此 Calendar 與指定 Object 比較。
int get(int field)
返回給定日歷欄位的值。
int getActualMaximum(int field)
給定此 Calendar 的時間值,返回指定日歷欄位可能擁有的最大值。
int getActualMinimum(int field)
給定此 Calendar 的時間值,返回指定日歷欄位可能擁有的最小值。
static Locale[] getAvailableLocales()
返回所有語言環境的數組,此類的 getInstance 方法可以為其返回本地化的實例。
String getDisplayName(int field, int style, Locale locale)
返回給定 style 和 locale 下的日歷 field 值的字元串表示形式。
Map<String,Integer> getDisplayNames(int field, int style, Locale locale)
返回給定 style 和 locale 下包含日歷 field 所有名稱的 Map 及其相應欄位值。
int getFirstDayOfWeek()
獲取一星期的第一天;例如,在美國,這一天是 SUNDAY,而在法國,這一天是 MONDAY。
abstract int getGreatestMinimum(int field)
返回此 Calendar 實例給定日歷欄位的最高的最小值。
static Calendar getInstance()
使用默認時區和語言環境獲得一個日歷。
static Calendar getInstance(Locale aLocale)
使用默認時區和指定語言環境獲得一個日歷。
static Calendar getInstance(TimeZone zone)
使用指定時區和默認語言環境獲得一個日歷。
static Calendar getInstance(TimeZone zone, Locale aLocale)
使用指定時區和語言環境獲得一個日歷。
abstract int getLeastMaximum(int field)
返回此 Calendar 實例給定日歷欄位的最低的最大值。
abstract int getMaximum(int field)
返回此 Calendar 實例給定日歷欄位的最大值。
int getMinimalDaysInFirstWeek()
獲取一年中第一個星期所需的最少天數,例如,如果定義第一個星期包含一年第一個月的第一天,則此方法將返回 1。
abstract int getMinimum(int field)
返回此 Calendar 實例給定日歷欄位的最小值。
Date getTime()
返回一個表示此 Calendar 時間值(從歷元至現在的毫秒偏移量)的 Date 對象。
long getTimeInMillis()
返回此 Calendar 的時間值,以毫秒為單位。
TimeZone getTimeZone()
獲得時區。
int hashCode()
返回該此日歷的哈希碼。
protected int internalGet(int field)
返回給定日歷欄位的值。
boolean isLenient()
判斷日期/時間的解釋是否為寬松的。
boolean isSet(int field)
確定給定日歷欄位是否已經設置了一個值,其中包括因為調用 get 方法觸發內部欄位計算而導致已經設置該值的情況。
abstract void roll(int field, boolean up)
在給定的時間欄位上添加或減去(上/下)單個時間單元,不更改更大的欄位。
void roll(int field, int amount)
向指定日歷欄位添加指定(有符號的)時間量,不更改更大的欄位。
void set(int field, int value)
將給定的日歷欄位設置為給定值。
void set(int year, int month, int date)
設置日歷欄位 YEAR、MONTH 和 DAY_OF_MONTH 的值。
void set(int year, int month, int date, int hourOfDay, int minute)
設置日歷欄位 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
void set(int year, int month, int date, int hourOfDay, int minute, int second)
設置欄位 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
void setFirstDayOfWeek(int value)
設置一星期的第一天是哪一天;例如,在美國,這一天是 SUNDAY,而在法國,這一天是 MONDAY。
void setLenient(boolean lenient)
指定日期/時間解釋是否是寬松的。
void setMinimalDaysInFirstWeek(int value)
設置一年中第一個星期所需的最少天數,例如,如果定義第一個星期包含一年第一個月的第一天,則使用值 1 調用此方法。
void setTime(Date date)
使用給定的 Date 設置此 Calendar 的時間。
void setTimeInMillis(long millis)
用給定的 long 值設置此 Calendar 的當前時間值。
void setTimeZone(TimeZone value)
使用給定的時區值來設置時區。
String toString()
返回此日歷的字元串表示形式。
❿ Java中中關於Calendar類的幾點注意事項
在使用Java的Calendar類會遇到的幾個問題,這里整理一下,供參考
在獲取月份時,Calendar.MONTH + 1 的原因
Java中的月份遵循了羅馬歷中的規則:當時一年中的月份數量是不固定的,第一個月是JANUARY。而Java中Calendar.MONTH返回的數值其實是當前月距離第一個月有多少個月份的數值,所以月份為JANUARY在Java中返回「0」,依次類推也就是在取Calendar.MONTH的值時我們需要+1。
2. 在獲取星期幾 Calendar.DAY_OF_WEEK – 1 的原因
Java中Calendar.DAY_OF_WEEK其實表示:一周中的第幾天,所以他會受到第一天是星期幾的影響。
有些地區以星期日作為一周的第一天,而有些地區以星期一作為一周的第一天,這2種情況是需要區分的。
看下錶的返回值
所以Calendar.DAY_OF_WEEK需要根據本地化設置的不同而確定是否需要 「-1」
Java中設置不同地區的輸出可以使用 Locale.setDefault(Locale.地區名) 來實現。
3. 獲取日期時 Calendar.DAY_OF_MONTH 不需要特殊的操作,他直接返回一個月中的第幾天