周java
1. java 如何获取 一个月 有多少周
你说需要计算一个月有多少周,若是指,一月,二月一直到十二月每个月有多少周的话,可以用Java8的新时间API进行计算,因为里面已经封装了每个月了,但由于每一年每个月的周数可能不同,所以必须还需要一个日期,也就是年,因此得到某年某月的某个时间,就可以相应算出这个时间所在月的第一天和最后一天,然后计算这第一天和最后一天相隔多少个周
思路:
获取所有月份的枚举集合A
随意获取一个时间B
循环所有的月份A,把B的月份依次修改为A中的每个月份,得到修改后的时间集合C
循环C中的所有时间,把每个时间都算出该时间的所在月份的第一天和最后一天,并计算周数
打印周数
代码:
//随意取一个时间,取了当前时间
LocalDatelocalDate=LocalDate.now();
System.out.println("当前时间为:"+localDate);
//根据封装好的月份获取一个一月到十二月的Month流,此时流里的对象为Month
Arrays.stream(Month.values())
//把每个month都调整到当前这个时间里,此时流的对象为LocalDate
.map(month->month.adjustInto(localDate))
//这里方便里观察此时流的数据,把转换后的时间打印了出来
.peek(System.out::println)
//根据时间的所在月的第一天和最后一天作为间隔计算周数
.map(temporal->ChronoUnit.WEEKS.between(temporal.with(TemporalAdjusters.firstDayOfMonth()),temporal.with(TemporalAdjusters.lastDayOfMonth())))
//打印最后的周数
.forEach(System.out::println);
2. java 怎么根据第几年的第几周获取那周周一的时期
1、使用Calendar类。
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2016); // 2016年
cal.set(Calendar.WEEK_OF_YEAR, 10); // 设置为2016年的第10周
cal.set(Calendar.DAY_OF_WEEK, 2); // 1表示周日,2表示周一,7表示周六
Date date = cal.getTime();
以上就能得到2016年第10周的周一的Date时间。
注:上面代码是手工敲的,没有放到eclipse中运行,有写错的地方请谅解
3. java 列出每年的周 并设置 每年的1-7号为第一周 ,由此开始算。并找出每周对应的日期
package p6.util;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import javax.swing.JOptionPane;
public class YearCalendar {
public static void main(String[] args) {
final String title = getCalTitle();
String input = JOptionPane.showInputDialog("Please input year");
try{
if(!input.trim().matches("^\\d{4}$")){
throw new NumberFormatException();
}
int year = Integer.parseInt(input.trim());
System.out.println("------- Calendar For Year " + year + " ----------------");
String[] monthTitles = new DateFormatSymbols().getMonths();
for(int month = Calendar.JANUARY; month <= Calendar.DECEMBER; month++){
System.out.println("\t********** " + monthTitles[month] + " *********");
System.out.println(title);
generateMonthlyCalendar(year, month);
System.out.println("\n\n");
}
}catch(NumberFormatException nbFmtExp){
JOptionPane.showMessageDialog(null, "Error data foramt! Date should be 4 digits only format yyyy");
System.exit(0);
}
}
private static String getCalTitle() {
StringBuffer sb = new StringBuffer();
String[] ary = new DateFormatSymbols().getShortWeekdays();
for(int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++){
sb.append(ary[i]+ "\t");
}
return sb.toString();
}
private static void generateMonthlyCalendar(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DATE, 1);
int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int i = 0;
for(i = Calendar.SUNDAY; i < cal.get(Calendar.DAY_OF_WEEK); i++){
System.out.print(" \t");
}
while(cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY){
System.out.print(cal.get(Calendar.DATE) + "\t");
cal.add(Calendar.DATE, 1);
}
int weekDay = Calendar.SATURDAY;
int day = cal.get(Calendar.DATE);
while(day <= maxDay){
if(weekDay == Calendar.SATURDAY){
System.out.println();
weekDay = Calendar.SUNDAY;
}else{
weekDay++;
}
System.out.print(day++ + "\t");
}
}
}
4. 周总结JAVA怎么写
一)多态的应用,我理解的多态就是:1)继承父类;2)子类对象指向父类引用;3)方法的重写。在多态中,子类可以调用父类的所有方法。
二)抽象类:所谓抽象类就是不能被实例化的类,如果要创建抽象类的实例就必须实现方法的重写eg: public abstract class Elployee{}声明一个抽象类。声明一个抽象方法eg: public abstract double computepay();将一个方法声明为抽象方法有两个结果:一是如果一个类包含了抽象方法,那么该类也必须是抽象的;二是任何子类必须重写抽象方法,除非子类本身也是抽象的。
三)接口:eg:public interface 接口名{任意数量的成员变量和抽象方法声明} 接口默认是抽象的、接口中的每一个方法默认也是抽象的、接口中的方法默认访问级别是public。类实现接口时有两个选择:实现接口中定义的所有方法;声明自己为抽象类。Eg: public class 类名 extends 父类名 implements 接口名,接口名{}(类用关键字implements来实现接口,接口可实现多继承,一个类可以实现多个接口,接口之间用逗号隔开)。
四)异常(检查异常、运行时异常、错误):对于异常的处理,有三种选择:捕获这个异常,不让它沿着调用栈继续向下抛出;捕获这个异常,并继续向下抛出;不捕获这个异常。捕获异常方法:try{被保护的代码}catch(异常的名称){捕获块}。声明一个异常:public void deposit (double amout) throws RemoteException。抛出一个异常:throw new (数组索引越界)。
5. 如何在一周内学会Java
首先可以看谭浩强的书,掌握基本的数据类型,类,对象,判断循环什么的,这个过程如果是自学,短则一周,长则一个月。并且要不断练习编写小程序,比如什么输出九九表啊,图形啊什么的。这个过程相当于学语文的学语法一样。
然后是看《Java核心技术》,学习常用的系统提供的方法,这个过程中你掌握的方法越多,往后学习起来越容易,并且要不断练习编写中、小程序,Java核心技术里的源代码特别多,比别的教材要好很多,而且工作中甚至都能用到那些源代码。还要大量阅读Java API文档,相当于学语文的时候翻字典一样。大概要半年时间。
6. java如何实现获取一年中所有周的星期一和星期天。(要求1月4号所在的周为新年第一周)
代码截图如下:从2021-1-1到2021-12-31日
运行结果
7. java如何得到每个月的周
使用java.util.Calendar的get(int Field) 很容易知道哪天是周几
java.text.SimpleDateFormatfm=newjava.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Calendarcal=java.util.Calendar.getInstance();
cal.setTime(fm.parse("2014-10-01"));
intm=cal.get(java.util.Calendar.MONTH);
while(true){
System.out.println(cal.getTime()+"是"+cal.get(java.util.Calendar.DAY_OF_WEEK));
cal.add(java.util.Calendar.DAY_OF_MONTH,1);
if(cal.get(java.util.Calendar.MONTH)!=m){
break;
}
}
//7是星期日、6是星期6、。。。。。。。
8. java中一个月按周划分
lz 你好
这个还是比较好实现
具体代码如下(有详细的注释):
importjava.util.*;
//月份划分类
publicclassMonthDivide{
privateintyear,month;//年份、月份
privateintweekend; //周数(第几周)
privateintleapYear[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //闰年每月天数
privateintcommonYear[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //平年每月天数
privateintstart,end;
//输入
publicvoidinputData(){
Scannerin=newScanner(System.in);
System.out.print("输入年份:");
year=in.nextInt();
System.out.print("输入月份:");
month=in.nextInt();
//System.out.print("输入周数:");
//weekend=in.nextInt();
}
//判断闰年
publicbooleanisLeapYear(intyear){
return(year%4==0&&year%100!=0)||(year%400==0);
}
//计算
publicvoidcount(){
intday,weekday,allDays=0;
//分别表示当月天数、当月一号是星期几、1900.1.1到当前输入日期之间的天数
day=isLeapYear(year)?leapYear[month]:commonYear[month];
if(weekend>(day==28?4:5)){
System.out.println("周数越界了!");
return;
}
//计算天数
for(inti=1900;i<year;i++){
allDays+=isLeapYear(i)?366:365;
}
for(inti=1;i<month;i++){
allDays+=isLeapYear(year)?leapYear[i]:commonYear[i];
}
//计算星期几
weekday=1+allDays%7;
//计算第weekend周的开始和结束
if(weekend==1){
start=1;
end=8-weekday;
}
else{
start=(weekend-2)*7+(9-weekday);
end=start+6;
if(end>day)
end=day;
}
}
//设置weekend周数
publicvoidsetWeekend(intwk){
weekend=wk;
}
//以下三个是获取属性
publicintgetStart(){
returnstart;
}
publicintgetEnd(){
returnend;
}
publicintgetWeekend(){
returnweekend;
}
//main
publicstaticvoidmain(String[]args){
MonthDividemd=newMonthDivide();
md.inputData();
for(inti=1;i<=5;i++){
md.setWeekend(i);
md.count();
System.out.print(" 第"+md.getWeekend()+"周开始于"+md.getStart()+"号 结束至"+md.getEnd()+"号");
}
}
}
运行结果:
希望能帮助你哈
9. java获取一年共有多少周
计算一年有多少个周的思路:首先,每年至少有52个周,至多有53个周,取决于周一是在哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断哪一天决定了当周是属于哪一年的逻辑是写在getYearWeekEndDay中。
/**
* 返回指定年度的所有周。List中包含的是String[2]对象<br>
* string[0]本周的开始日期,string[1]是本周的结束日期。<br>
* 日期的格式为yyyy-MM-dd。<br>
* 每年的第一个周,必须包含星期一且是完整的七天。<br>
* 例如:2009年的第一个周开始日期为2009-01-05,结束日期为2009-01-11。 <br>
* 星期一在哪一年,那么包含这个星期的周就是哪一年的周。<br>
* 例如:2008-12-29是星期一,2009-01-04是星期日,哪么这个周就是2008年度的最后一个周。<br>
*
* @param year 格式 yyyy ,必须大于1900年度 小于9999年
* @return
*/
public static List<String[]> getWeeksByYear(final int year){
if(year<1900 || year >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
//实现思路,首先计算当年有多少个周,然后找到每个周的开始日期和结束日期
// Calendar calendar = new GregorianCalendar();
// // 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。
// calendar.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
// calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
// calendar.setMinimalDaysInFirstWeek(7); //设置每周最少为7天
// calendar.set(Calendar.YEAR, year); // 设置年度为指定的年
// //首先计算当年有多少个周,每年都至少有52个周,个别年度有53个周
int weeks = getWeekNumByYear(year);
// System.out.println(year+"共有"+weeks+"个周");
List<String[]> result = new ArrayList<String[]>(weeks);
for(int i=1;i<=weeks;i++){
String[] tempWeek = new String[2];
tempWeek[0] = getYearWeekFirstDay(year,i);
tempWeek[1] = getYearWeekEndDay (year,i);
//或者使用下面的代码,不过发现效率更低
// tempWeek[0] = getDateAdd(firstWeekDay,(i-1)*7+0);
// tempWeek[1] = getDateAdd(firstWeekDay,(i-1)*7+6);
result.add(tempWeek);
// System.out.println(i+"="+tempWeek[0]+"_"+tempWeek[1]);
}
return result;
}
/**
* 计算指定年度共有多少个周。
* @param year 格式 yyyy ,必须大于1900年度 小于9999年
* @return
*/
public static int getWeekNumByYear(final int year){
if(year<1900 || year >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
int result = 52;//每年至少有52个周 ,最多有53个周。
String date = getYearWeekFirstDay(year,53);
if(date.substring(0, 4).equals(year+"")){ //判断年度是否相符,如果相符说明有53个周。
result = 53;
}
return result;
}
/**
* 计算某年某周的开始日期
* @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年
* @param weekNum 1到52或者53
* @return 日期,格式为yyyy-MM-dd
*/
public static String getYearWeekFirstDay(int yearNum,int weekNum) {
if(yearNum<1900 || yearNum >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天
cal.set(Calendar.YEAR, yearNum);
cal.set(Calendar.WEEK_OF_YEAR, weekNum);
//分别取得当前日期的年、月、日
return getFormatDate(cal.getTime());
}
/**
* 计算某年某周的结束日期
* @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年
* @param weekNum 1到52或者53
* @return 日期,格式为yyyy-MM-dd
*/
public static String getYearWeekEndDay(int yearNum,int weekNum) {
if(yearNum<1900 || yearNum >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天
cal.set(Calendar.YEAR, yearNum);
cal.set(Calendar.WEEK_OF_YEAR, weekNum);
return getFormatDate(cal.getTime());
}
10. Java如何判断今天本月第几周的周几
使用Calendar类可以对日期进行常用操作,代码如下:
Calendarc=Calendar.getInstance();
//当前日期是本月第几周
intweeks=c.get(Calendar.WEEK_OF_MONTH);
System.out.println(weeks);
//当前是星期几java中一周第一天为星期天,所以1代表星期日,2代表星期一,以此类推,7代表星期6
intweek=c.get(Calendar.DAY_OF_WEEK);
System.out.println(week);