java中關於星期時間的操作

來源:互聯網
上載者:User

在最近的一個OA中,我需要判斷兩個日期是否是同一周,根據一個給定的日期獲得所屬周的周一和周五的日期。

在完成以上任務時,我發現Calendar 的確是一個功能強大的class。

下面給出源碼,供兄弟們參考指正。

/*
 * 建立日期 2005-3-30

package com.infoearth;

import java.sql.Timestamp;
import java.text.*;
import java.util.*;
/**
 * @李春雷
 *
public class ManageWeek {
 //判斷兩個日期是否在同一周
 boolean isSameWeekDates(Date date1, Date date2) {
  Calendar cal1 = Calendar.getInstance();
  Calendar cal2 = Calendar.getInstance();
  cal1.setTime(date1);
  cal2.setTime(date2);
  int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
  if (0 == subYear) {
    if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
   return true;
  }
  else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
    // 如果12月的最後一周橫跨來年第一周的話則最後一周即算做來年的第一周
    if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
   return true;
  }
  else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
    if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
   return true;
  }
  return false;
 }
 
 
 //產生周序列
 public static String  getSeqWeek(){
  Calendar c = Calendar.getInstance(Locale.CHINA);
  String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
  if(week.length()==1)week = "0" + week;
  String year = Integer.toString(c.get(Calendar.YEAR));  
  return year+week;
  
 }
 
  //獲得周一的日期
  public static String getMonday(Date date){
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
   return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
  }
  
  
  //獲得周五的日期
  public static String getFriday(Date date){
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);   
   return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());  
  }

//當前日期前幾天或者後幾天的日期

 public static String afterNDay(int n){
        Calendar c=Calendar.getInstance();
        DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
        c.setTime(new Date());
        c.add(Calendar.DATE,n);
        Date d2=c.getTime();
        String s=df.format(d2);
        return s;
    }
  
  public static void main(String[] args){

  }

}

經常碰到把一個字串轉成一個Date的問題,其實就3句話:

String myString = "2005/12/20";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.CHINA);
Date d = sdf.parse(myString);

下面是個例子,存檔

package formatdatetime;

import java.text.*;
import java.util.*;

/**
 * @author Administrator
 *
 * TODO 要更改此產生的類型注釋的模板,請轉至
 * 視窗 - 喜好設定 - Java - 代碼樣式 - 代碼模板
 */
public class StringToDateTimeTest {

 public static void main(String[] args) {

  String myString = "Tue Oct 18 04:11:56 CST 2005";
  //String myString = "2005/12/20";
  try {
   SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
   //SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.CHINA);
   Date d = sdf.parse(myString);
   Calendar c = Calendar.getInstance();
   c.setTime(d);
   String s = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
   System.out.println(s);
   
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.