
你说需要计算一个月有多少周,若是指,一月,二月一直到十二月每个月有多少周的话,可以用Java8的新时间API进行计算,因为里面已经封装了每个月了,但由于每一年每个月的周数可能不同,所以必须还需要一个日期,也就是年,因此得到某年某月的某个时间,就可以相应算出这个时间所在月的第一天和最后一天,然后计算这第一天和最后一天相隔多少个周
思路:
获取所有月份的枚举集合A
随意获取一个时间B
循环所有的月份A,把B的月份依次修改为A中的每个月份,得到修改后的时间集合C
循环C中的所有时间,把每个时间都算出该时间的所在月份的第一天和最后一天,并计算周数
打印周数
代码:
// 随意取一个时间,取了当前时间LocalDate localDate = LocalDatenow();
Systemoutprintln("当前时间为:" + localDate);
// 根据封装好的月份获取一个一月到十二月的Month流,此时流里的对象为Month
Arraysstream(Monthvalues())
// 把每个month都调整到当前这个时间里,此时流的对象为LocalDate
map(month -> monthadjustInto(localDate))
// 这里方便里观察此时流的数据,把转换后的时间打印了出来
peek(Systemout::println)
// 根据时间的所在月的第一天和最后一天作为间隔计算周数
map(temporal -> ChronoUnitWEEKSbetween(temporalwith(TemporalAdjustersfirstDayOfMonth()), temporalwith(TemporalAdjusterslastDayOfMonth())))
// 打印最后的周数
forEach(Systemout::println);
//得到long类型当前时间
long l = SystemcurrentTimeMillis();
//new日期对
Date date = new Date(l);
//转换提日期输出格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-
dd HH:mm:ss");Systemoutprintln(dateFormatformat(date));
扩展资料
package comob;
import javatextParseException;
import javatextSimpleDateFormat;
import javautilCalendar;
import javautilDate;
public class DateTest {
public static void main(String[] args) throws ParseException {
Calendar now = CalendargetInstance();
Systemoutprintln("年: " + nowget(CalendarYEAR));
Systemoutprintln("月: " + (nowget(CalendarMONTH) + 1) + "");
Systemoutprintln("日: " + nowget(CalendarDAY_OF_MONTH));
Systemoutprintln("时: " + nowget(CalendarHOUR_OF_DAY));
Systemoutprintln("分: " + nowget(CalendarMINUTE));
Systemoutprintln("秒: " + nowget(CalendarSECOND));
Systemoutprintln("当前时间毫秒数:" + nowgetTimeInMillis());
Systemoutprintln(nowgetTime());
\t\tDate d = new Date();
Systemoutprintln(d);
\t\tSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
\t\tString dateNowStr = sdfformat(d);
Systemoutprintln("格式化后的日期:" + dateNowStr);
\t\t
\t\tString str = "2012-1-13 17:26:33";
//要跟上面sdf定义的格式一样
\t\tDate today = sdfparse(str);
Systemoutprintln("字符串转成日期:" + today);
\t}
}
参考资料:
Map<LocalDate, Double> data=new HashMap<>();
dataput (LocalDateparse ("2017-01-01"),02);
dataput (LocalDateparse ("2017-01-02"),05);
dataput (LocalDateparse ("2016-01-02"),05);
dataput (LocalDateparse ("2019-07-04"),02);
dataput (LocalDateparse ("2019-07-05"),02);
dataput (LocalDateparse ("2019-10-08"),02);
dataput (LocalDateparse ("2018-07-04"),03);
//预期结果
Map<String, List<Double>> results=new HashMap<>();
//类似这样// [{"2017年第一季度",[02,05]}, ["2019年第三季度",[02,03]}]
String[] num = {"一", "二", "三", "四"};
for (MapEntry<LocalDate, Double> localDateDoubleEntry : dataentrySet()) {
int y = localDateDoubleEntrygetKey()getYear();
int m = localDateDoubleEntrygetKey()getMonthValue();
String t = y + "年第" + num[(m - 1) / 3] + "季度";
if(!resultscontainsKey(t)) {
resultsput(t, new ArrayList<>());
}
resultsget(t)add(localDateDoubleEntrygetValue());
}
Systemoutprintln(results);
以上就是关于java 如何获取 一个月 有多少周全部的内容,包括:java 如何获取 一个月 有多少周、java如何获取当前时间 年月日 时分秒、Java问题,求大神解答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)