public static void main(String[] agrs) {
String newtime="2013-8-4";
Systemoutprintln(newtime+""+testDate(newtime));
}
public static String testDate(String newtime) {
String dayNames[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
int week1[] = {7,1,2,3,4,5,6};
Calendar c = CalendargetInstance();// 获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
csetTime(sdfparse(newtime));
} catch (ParseException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
String a=dayNames[cget(CalendarDAY_OF_WEEK)-1];
int b=week1[cget(CalendarDAY_OF_WEEK)-1];
if(b!=7){
cset(CalendarDAY_OF_WEEK, CalendarMONDAY);
}else{
cadd(CalendarWEEK_OF_MONTH, -1);
cset(CalendarDAY_OF_WEEK, 2);
}
for(int i=1;i<b;i++){
if(i==1){
Systemoutprintln(sdfformat(cgetTime()));//本周一
}
cadd(CalendarDATE,1);
Systemoutprintln(sdfformat(cgetTime()));
}
Systemoutprintln("-------------");
return a;
}
测试结果:
2013-07-29
2013-07-30
2013-07-31
2013-08-01
2013-08-02
2013-08-03
2013-08-04
-------------
2013-8-4星期日
package comrxlamozhidao;
import javatextSimpleDateFormat;
import javautilCalendar;
public class Test {
public static void main(String[] args) {
// 获取离当前日期最近的一个星期天
getLastSunday();
}
/
获取离当前日期最近的一个星期天
/
public static void getLastSunday() {
// 获取当前日期
Calendar calendar = CalendargetInstance();
// 距离上个周日的差值
long diffTime = 0L;
// 今天星期几,注:此处周日 = 1 ,周一 = 2 。。。。
int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);
Systemoutprintln("toady:" + dayOfWeek);
// 如果今天是周日,看需求,是取今天的,还是取上周的
if (dayOfWeek == 1){
// 取今天
// dayOfWeek = 1;
// 取上周
dayOfWeek = 8;
}
// 计算当前时间距离上周日的时差,此处一周的开始从周日算起,根据需要
diffTime = (dayOfWeek - 1 ) 24 60 60 1000;
calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);
//
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));
// 如果一周的开始从周一计算,并且请注释掉上面的 if (dayOfWeek == 1) 处判断,需要重新判断
if (dayOfWeek == 1){
// 取今天
// dayOfWeek = 0;
// 取上周
dayOfWeek = 7;
}
diffTime = dayOfWeek 24 60 60 1000;
calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);
Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));
}
}
有不明白在问我
public static void main(String[] agrs) {
String newtime="2013-7-21";
Systemoutprint(testDate(newtime));
}
public static String testDate(String newtime) {
String dayNames[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
Calendar c = CalendargetInstance();// 获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
csetTime(sdfparse(newtime));
} catch (ParseException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
return dayNames[cget(CalendarDAY_OF_WEEK)-1];
}
对于单双数日,能被2整除就是双数日,反之是单数日
我的程序是输入某年某周,输出这一周的开始日期和结束时期,不知是否符合你的需要。至少Java是不直接提供这种方法的。
import javautil;
public class Test31 {
public static void main(String[] args) {
int year, year1, year2, month1, month2, day1, day2, week, sum = 0;
int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int i;
Scanner scan = new Scanner(Systemin);
Systemoutprint("年:");
year = scannextInt();
Systemoutprint("周次:");
week = scannextInt();
if (year < 0) {
Systemoutprintln("年份错误,必须大于等于0");
return;
}
if (week < 1 || week > 54) {
Systemoutprintln("周次错误,必须位于 1 53 之间");
return;
}
sum += 7 (week - 1);
//修正总天数
Calendar c = CalendargetInstance();
cset(year, 0, 1);
switch (cget(CalendarDAY_OF_WEEK))
{
case CalendarTUESDAY:
{
sum -= 1;
break;
}
case CalendarWEDNESDAY:
{
sum -= 2;
break;
}
case CalendarTHURSDAY:
{
sum -= 3;
break;
}
case CalendarFRIDAY:
{
sum -= 4;
break;
}
case CalendarSATURDAY:
{
sum -= 5;
break;
}
case CalendarSUNDAY:
{
sum -= 6;
break;
}
default:
break;
}
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
days[1] = 29;
}
for (i = 0; i < dayslength; i++) {
if (sum >= days[i]) {
sum -= days[i];
}
else {
break;
}
}
year1 = year;
month1= i + 1;
day1 = sum + 1;
//修改开始日期
if (day1 < 1) {
day1 += days[11];
month1 = 12;
year1--;
}
year2 = year1;
month2 = month1;
day2 = day1 + 6;
if (day2 > days[month1 - 1]) {
day2 -= days[month1 - 1];
month2++;
if (month2 > 12) {
month2 = 1;
year2++;
}
}
Systemoutprintf("%d年第%d周 : %d年%d月%d日 ~ %d年%d月%d日", year, week, year1, month1, day1, year2, month2, day2);
}
}
输出测试:
年:2011
周次:22
2011年第22周 : 2011年5月23日 ~ 2011年5月29日
年:2011
周次:1
2011年第1周 : 2010年12月27日 ~ 2011年1月2日
这是从星期一至星期日。
也可以这样:
public static void main(String[] args){
Scanner scan = new Scanner(Systemin);
Systemoutprint("年:");
int year = scannextInt();
Systemoutprint("周:");
int week = scannextInt();
Calendar c = CalendargetInstance();
cset(CalendarDAY_OF_WEEK, 1);
cset(CalendarWEEK_OF_YEAR, week);
//该周第一天(星期日)所在的日期
int y1 = cget(CalendarYEAR);
int m1 = cget(CalendarMONTH) + 1;
int d1 = cget(CalendarDATE);
cadd(CalendarDATE, 6);
//该周最后一天(星期六)所在的日期
int y2 = cget(CalendarYEAR);
int m2 = cget(CalendarMONTH) + 1;
int d2 = cget(CalendarDATE);
Systemoutprintf("%d年第%d周:%d-%d-%d ~ %d-%d-%d", year, week, y1, m1, d1, y2, m2, d2);
}
这是从星期日开始,如:
年:2011
周:22
2011年第22周:2011-5-22 ~ 2011-5-28
这个问题不是很难,有关判断日期是否合法,其实已经有现成的包可以用,没有必要自己写方法来实现,代码如下:
import javautil;
public class WeekTest {
private String[][] javadays=new String[12][31];
public WeekTest(){
String[] weeks=new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
for(int i=0;i<12;i++){
for(int j=0;j<31;j++){
GregorianCalendar gc=new GregorianCalendar();
gcsetLenient(false);
try{
gcset(2008,i,j+1);
int week=gcget(CalendarDAY_OF_WEEK);
javadays[i][j]=new String(weeks[week-1]);
}catch(Exception e){}
}
}
}
public void randomPrint(){
HashSet<Integer> hs=new HashSet<Integer>();
while(true){
if(hssize()==10)
break;
int day=((int)(Mathrandom()1000))%366;
if(hscontains(new Integer(day)))
continue;
hsadd(new Integer(day));
}
for(Integer day:hs){
GregorianCalendar gc=new GregorianCalendar(2008,0,1);
gcadd(CalendarDATE,dayintValue());
int month=gcget(CalendarMONTH)+1;
int date=gcget(CalendarDAY_OF_MONTH);
Systemoutprintln("2008年"+(month<10"0"+month:month)+"月"+(date<10"0"+date:date)+"日\t"+javadays[month-1][date-1]);
}
}
public void replaceAll(){
String[][] weekStr=new String[2][];
weekStr[0]=new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
weekStr[1]=new String[]{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
for(int i=0;i<12;i++){
for(int j=0;j<31;j++){
for(int k=0;k<7;k++){
if(javadays[i][j]!=null && javadays[i][j]equals(weekStr[0][k]))
javadays[i][j]=new String(weekStr[1][k]);
}
}
}
}
public static void main(String[] args) {
WeekTest wt=new WeekTest();
wtrandomPrint();
wtreplaceAll();
wtrandomPrint();
}
}
public static void main(String[] args) {
//获得当前日期
Date date = new Date();
//格式化日期,EEEE为星期几格式化
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
Systemoutprintln("今天是:"+dateFmformat(date));
//再举个格式化的例子:
Systemoutprintln("今天是:"+new SimpleDateFormat("yyyyMMddEEEE")format(date));
}
1、使用Calendar类。
Calendar cal = CalendargetInstance();
calset(CalendarYEAR, 2016); // 2016年
calset(CalendarWEEK_OF_YEAR, 10); // 设置为2016年的第10周
calset(CalendarDAY_OF_WEEK, 2); // 1表示周日,2表示周一,7表示周六
Date date = calgetTime();
以上就能得到2016年第10周的周一的Date时间。
注:上面代码是手工敲的,没有放到eclipse中运行,有写错的地方请谅解
以上就是关于java 日期,根据今天的日期,输出这一周的其他日期,例如:2013-7-31,输出这周从第一天开始到今天的日期全部的内容,包括:java 日期,根据今天的日期,输出这一周的其他日期,例如:2013-7-31,输出这周从第一天开始到今天的日期、在java里怎么取离当前日期最近的一个星期天、Java 日期如何判断是星期几求大神代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)