`
pingfan
  • 浏览: 38786 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 计算某天在在日历中的位置

    博客分类:
  • java
阅读更多
背景:
    最近项目前台要展示一个日历风格数据,需要计算显示位置。

思路:
    我找了个没找到java有相关的工具类可以获取这样的日期数据,只好自己写了。
    日历显示第一个格子一般是星期天,因此设置日历星期的第1天为星期天,取月的1号的星期数(1-7)作为基数,将当前天(几号)加上基数再减1就是在日历中的索引了,索引范围是1-42 (其实出现最大的是37,即1号索引为7,31号索引为37)
(显示5行的日历)

上代码:
    /**
     * 取日期在日历中的索引 (注意周第一天为星期日)
     * @param strDate 字符串格式日期
     * @param format 格式
     * @return 索引值[1-42]
     */
    public static int getDayInCalendar(String strDate,String format){    	
    	Date date = toDateFromStr(strDate, format);
    	return getDayInCalendar(date);
    }    
    
    
    /**
     * 取日期在日历中的索引 (注意周第一天为星期日)
     * @param date 日期
     * @return 索引值[1-42]
     */
    public static int getDayInCalendar(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setFirstDayOfWeek(Calendar.SUNDAY);		
		cal.setTime(date);
		int firstDayIndex = 0;
		//几号(1-28,29,30,31)
		int day = cal.get(Calendar.DAY_OF_MONTH);
		//1号特殊  星期几就是在日历中的索引(1-7) 
		if(day == 1){
			//星期几(1-7)
			int weekDay = cal.get(Calendar.DAY_OF_WEEK);			
			return weekDay;			
		}else{
			//1号所在的索引,也即是1号是星期几
			firstDayIndex = getDayInCalendar(toDateFromStr(formatDate(cal.getTime(), "yyyy-MM-01"), DAY_FORMAT));			
		}
		//当前几号+1号索引-1,就是在日历中的位置
		int index = day + firstDayIndex - 1;
		return index;
    }

    
    public static void main(String[] args)
    {
    	String startDay = "2012-09-01";
    	Calendar cal = Calendar.getInstance();		
    	cal.setTime(DateUtil.toDateFromStr(startDay, DateUtil.DAY_FORMAT));
		for (int i=0;i<35;i++) {			
			System.out.println(formatDate(cal.getTime(), DAY_FORMAT)+" "+getDayInCalendar(cal.getTime()));
			cal.add(Calendar.DAY_OF_MONTH, 1);
		}
    }



测试:
2012-09-01 7
2012-09-02 8
2012-09-03 9
2012-09-04 10
2012-09-05 11
2012-09-06 12
2012-09-07 13
2012-09-08 14
2012-09-09 15
2012-09-10 16
2012-09-11 17
2012-09-12 18
2012-09-13 19
2012-09-14 20
2012-09-15 21
2012-09-16 22
2012-09-17 23
2012-09-18 24
2012-09-19 25
2012-09-20 26
2012-09-21 27
2012-09-22 28
2012-09-23 29
2012-09-24 30
2012-09-25 31
2012-09-26 32
2012-09-27 33
2012-09-28 34
2012-09-29 35
2012-09-30 36
2012-10-01 2
2012-10-02 3
2012-10-03 4
2012-10-04 5
2012-10-05 6


图:



  • 大小: 43 KB
分享到:
评论

相关推荐

    JAVA时间工具类(计算法定工作日工时等)

    JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),...计算某月第一个工作日,计算某月最后一个工作日。

    自己制作的JAVA日历源码

    最后,为了保持代码的模块化和可维护性,源码可能遵循了单一职责原则,将各个功能如日历显示、日期计算、事件处理等封装在不同的类中。这有助于代码的组织和测试。 总的来说,这个“JAVA日历源码”项目涵盖了Java ...

    打印日历(java)

    在Java编程中,打印日历是一项常见的任务,尤其在处理日期和时间相关的应用时。"打印日历"这个功能涉及到对日历对象的操作,以及如何按照特定格式输出日期信息。在Java中,我们可以使用`java.util.Calendar`类来创建...

    《java日历源代码》

    Java日历源代码是用于创建一个能够显示特定年份和月份日历的程序,同时它还能告诉用户在输入的一年中的某一天是星期几。这个功能对于开发具有日期管理或日程安排特性的应用程序非常有用。Java编程语言提供了丰富的...

    纯JAVA计算日期的农历节日、公历节日代码!

    在Java编程语言中,处理日期和时间是一项常见的任务,尤其是涉及到农历和公历节日的计算。这个主题的核心在于如何利用Java API来实现农历和公历节日的转换与判断。以下是一些关键的知识点: 1. **Java日期时间API**...

    java编写的日历类程序,输入年份和月份,打印出该月的日历

    本程序为一个基于Java实现的日历生成器,用户可以通过输入指定的年份与月份,在控制台上输出对应月份的日历。输出格式包括一周七天的名称(“日”、“一”、“二”、“三”、“四”、“五”、“六”),以及具体的...

    java日历的简单开发

    3. **计算某年某月之前的所有天数总和**:通过`allDays`方法计算出从1900年到指定年份的某个月初之间共有多少天。 4. **输出月历**:通过`calendar`方法实现,该方法会根据上述计算结果输出月历。 #### 三、详细...

    java实现简单的日历功能,可以输入年份和月份来输出日历.zip

    在Java编程语言中,实现一个简单的日历功能主要涉及到日期处理和格式化。这个项目的目标是根据用户输入的年份和月份,动态生成相应的日历视图。在提供的压缩包中,包含了一个名为"K.java"的源代码文件,我们可以假设...

    java 日历代码

    虽然原始代码中未给出具体实现,但可以推测存在一个名为`weekday`的方法来计算某一天是一周中的第几天。通常可以通过以下公式计算: ```java public int weekday(int y, int m, int d) { int t[] = {0, 3, 2, 5, 0,...

    计算输入的某年某月某日是该年的第几天

    在编程领域,计算某年某月某日是该年的第几天是一个常见的日期处理问题,它涉及到日期运算和日历算法。这个任务可以通过多种编程语言来实现,如Python、Java、C++等。以下我们将深入探讨如何进行这样的计算,并提供...

    Java Swing组件实现的日历程序

    其次,日期计算:在Java中,java.util.Calendar和java.time.LocalDate类用于处理日期。Calendar类提供了丰富的API来操作日期,如获取和设置年、月、日等。LocalDate是Java 8引入的新API,更简洁易用,但在此场景下,...

    手机里的日历实用程序(Java)

    在IT行业中,编程语言Java以其跨平台性和丰富的库支持,被广泛用于开发各种应用程序,包括系统工具类软件。本项目“手机里的日历实用程序”就是一个典型的例子,它利用Java技术实现了查看1800年以后任意一年日历的...

    输入某年某月某日,判断这一天是这一年的第几天

    在编程领域,计算某年某月某日是这一年中的第几天是一个常见的日期处理问题,它涉及到日期算法和日历系统。这个任务通常可以通过编程语言内置的日期和时间库来完成,比如Python的`datetime`模块或者Java的`java.time...

    JAVA程序实现日历.rar

    在给定的“JAVA程序实现日历.rar”压缩包中,可能包含了一个Java程序,用于创建一个自定义的日历视图或者进行日期相关的计算。这个程序可能使用了Java 8引入的`java.time`包,它提供了更为强大和灵活的日期时间处理...

    Java编写日历面板代码及调用 Eclipse可用

    在代码中,可能包含计算日历表的逻辑,包括计算当前月的天数、确定周末、设置日期字体颜色等。这部分可能涉及到`Calendar`和`SimpleDateFormat`类的使用。 9. **交互设计**: 添加鼠标监听器,如`MouseListener`...

    一个简单的日历(java和android通用)

    在Java和Android开发中,我们经常需要一个轻量级、高效且易于使用的日历组件。本项目名为“一个简单的日历(java和android通用)”,它提供了一个跨平台的日历解决方案,特别适合那些需要在Java后端和Android前端...

    java日历大全(代码)

    在Java编程语言中,日历类是处理日期和时间的核心工具。这个压缩包文件“java日历大全(代码)”显然包含了一系列用Java实现的日历功能的源代码示例。通过这些示例,我们可以深入理解Java如何处理日期和时间,以及如何...

    请假时长计算和每月工作天数计算源码

    例如,当员工从某一天的上午9点开始请假到第二天下午3点,我们需要计算出这期间的总小时数。可以先将两个日期转换为`LocalDateTime`,然后使用`Duration.between()`计算差值,最后通过`Duration.toHours()`获取小时...

    java实现日历(某年的日历,某月的日历)用户完全自定义

    在Java编程语言中,实现一个用户完全自定义的日历系统是一项常见的任务,它可以用来显示特定年份或月份的日历。这个日历系统不仅能够展示日期,还能根据用户的偏好进行定制,比如选择字体、颜色或者布局。以下是一些...

Global site tag (gtag.js) - Google Analytics