问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 怎么根据一天的时间得到一周的时间

发布网友 发布时间:2023-12-23 08:48

我来回答

4个回答

热心网友 时间:2024-01-20 21:29

楼主我这方法都拆开了,应该还算比较好理解。。。也有注释
======================================================================
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class WeekToDay {
public static void main(String[] args) {
String date = "2012-12-01";
String[] a;
try {
a = getStringDate(date);
for(String k : a){
System.out.println(k);
}
} catch (ParseException e) {
e.printStackTrace();
}
}

public static String[] getStringDate(String date) throws ParseException{
String[] weeks = new String[7];//返回的这周的日期
String[] a = date.split("-");
int week = getDayOfWeek(a[0], a[1], a[2]);//获取周几
int minWeek = 0;
int maxWeek = 7;
String format = "yyyy-MM-dd";

if(week == 1){//如果是周日(老外是从周日开始算一周,所以有点恶心)
weeks[6] = date;
for(int i = 5; i >= 0; i--){
weeks[i] = getFormatDateAdd(getStrToDate(date, format), -1, format);
date = weeks[i];
}
}else{
int temp = week - 2;
weeks[temp] = date;
for(int i = temp - 1; i >= minWeek; i--){
weeks[i] = getFormatDateAdd(getStrToDate(date, format), -1, format);
date = weeks[i];
}
date = weeks[temp];
for(int i = temp + 1; i < maxWeek; i++){
weeks[i] = getFormatDateAdd(getStrToDate(date, format), 1, format);
date = weeks[i];
}
}

return weeks;
}

/**
* 根据指定的年、月、日返回当前是星期几。1表示星期天、2表示星期一、7表示星期六。
*
* @param year
* @param month
* month是从1开始的12结束
* @param day
* @return 返回一个代表当期日期是星期几的数字。1表示星期天、2表示星期一、7表示星期六。
*/
public static int getDayOfWeek(String year, String month, String day) {
Calendar cal = new GregorianCalendar(new Integer(year).intValue(),
new Integer(month).intValue() - 1, new Integer(day).intValue());
return cal.get(Calendar.DAY_OF_WEEK);
}

/**
* 取得给定日期加上一定天数后的日期对象.
*
* @param date
* 给定的日期对象
* @param amount
* 需要添加的天数,如果是向前的天数,使用负数就可以.
* @param format
* 输出格式.
* @return Date 加上一定天数以后的Date对象.
*/
public static String getFormatDateAdd(Date date, int amount, String format) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(GregorianCalendar.DATE, amount);
return getFormatDateTime(cal.getTime(), format);
}

/**
* 根据给定的格式与时间(Date类型的),返回时间字符串。最为通用。<br>
*
* @param date
* 指定的日期
* @param format
* 日期格式字符串
* @return String 指定格式的日期字符串.
*/
public static String getFormatDateTime(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}

/**
* 返回制定日期字符串的date格式
*
* @param date
* @param format
* @return
* @throws ParseException
*/
public static Date getStrToDate(String date, String format) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(date);
}
}

热心网友 时间:2024-01-20 21:29

//这个根据当天的时间在所在月份的周时间
public static void cal(String time){//其中time为yyyy-mm-dd形式

int year=Integer.valueOf(time.split("-")[0]);
int mon=Integer.valueOf(time.split("-")[1]);
int day=Integer.valueOf(time.split("-")[2]);
Calendar oDate = Calendar.getInstance();
oDate.set(year,mon-1,day);

oDate.add(Calendar.DATE,(-1) * (oDate.get(Calendar.DAY_OF_WEEK)));
String s=new String();
for (int i = 1;i <8;i++){
oDate.add(Calendar.DATE,1);
if((oDate.get(Calendar.MONTH)+1)==mon){
s=oDate.get(Calendar.YEAR) + "-";
s+=(oDate.get(Calendar.MONTH) + 1) + "-"+oDate.get(Calendar.DATE);
}
System.out.println(s);
}
}

//这个是根据一天的时间得到一周的时间
public static void cal2(String time){//其中time为yyyy-mm-dd形式

int year=Integer.valueOf(time.split("-")[0]);
int mon=Integer.valueOf(time.split("-")[1]);
int day=Integer.valueOf(time.split("-")[2]);
Calendar oDate = Calendar.getInstance();
oDate.set(year,mon-1,day);

oDate.add(Calendar.DATE,(-1) * (oDate.get(Calendar.DAY_OF_WEEK)));
String s=new String();
for (int i = 1;i <8;i++){
oDate.add(Calendar.DATE,1);
s=oDate.get(Calendar.YEAR) + "-";
s+=(oDate.get(Calendar.MONTH) + 1) + "-"+oDate.get(Calendar.DATE);
System.out.println(s);
}
}

比较简陋!!

热心网友 时间:2024-01-20 21:30

建议使用java.util.Calendar类,具体做法,回头再谈~

热心网友 时间:2024-01-20 21:30

696
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 一年内第二次修改技巧 男朋友还和以前暧昧过的女生有来往怎么办! 一年内第二次修改技巧 一个手机号在注册了一个微信后又注册了新的,旧的怎么找回? 湖州港中旅和乐谷别墅楼盘地址在哪里? 修改未满一年怎么修改 我在一个场景中做了一个flash动画.但播放一直不停,我想播放到最后停下... 忘记密码手机号不用了怎么办 改一年内怎么改第二次 衣服发什么物流?几天能到?例如是到新疆呼和浩特。 我想要个性能和蓝宝石HD5770的性能差不多的显卡 宽松t恤配什么裤子 一个手机号在注册了一个微信后又注册了新的,旧的怎么找回? 四通一达 这些快递的费用怎么算的一般送货什么时间到?求高手解答!_百度... 修改没到一年怎么改? 改一年内怎么改第二次 苹果手机怎么改第二次修改技巧 没到一年怎么强制更改 微信知道忘记密码,手机号没用了怎么办? 电阻1 4w是什么意思 ...点哪个视频哪个视频就开始播放,这个flash怎么做 跟蓝宝石hd5770性能差不多的显卡有哪些?要全新的,求推荐 怎么改第二次最简单的方法 修改一年内如何二次修改吗苹果 改错了未满一年怎么改回来 问道中关于天书的问题,请高手作答 男朋友和暧昧对象会有纯洁的友谊吗? 求推荐个好点的大回车键盘 为什么现在新出的键盘都是小回车多,想买个... 痔疮手术便后剧痛的原因 杭州湾金融广场属于哪个区 用同一个手机号重新注册了一个,之前的微信怎么登录? ...痔疮做的微创手术,现在已经十二天。每次大便后,肛门处有肿胀感觉... ...以后可以给我内部消息买原始股,不知道是不是骗局 不满一年如何更改? 一年内第二次修改技巧 从港中旅到三盛应该怎么走 鸭胗是酸性还是碱性食物(鸭属于酸性还是碱性食物) 登不上,我又注册了一个新的,以前的微号还能找回来吗? 同一个手机号注册了两个微信,第一登不上了怎么办? 用苹果手机怎么做到第二次修改