当前位置:编程学习 > JAVA >>

日期和周次的转换计算

需要把从数据库中读取的数据计算转换成相应的周次和星期显示

首先是从数据库中读取日期时间,根据学校的校历,如果2011-8-22为第一周周一,如何将从数据库中读取的list中日期数据转换成第几周周几的形式

比较急,求帮忙 --------------------编程问答-------------------- <logic:notEmpty name="list" property="date">
<bean:define id="date" name="list" property="date"></bean:define>
<% 
java.sql.Date dates = java.sql.Date.valueOf(date+"");  
                // 将 JDBC 日期转义形式的字符串转换成 Date 值。假设你这里格式正确 yyyy-mm-dd
                // 如果不是, 再转一下
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(dates);
int WEEK_OF_YEAR = c.get(c.WEEK_OF_YEAR) - 0; // 一年中的第几周, 减去前面N周
int DAY_OF_WEEK = c.get(c.DAY_OF_WEEK);      // 本周的星期几
%>
</logic:notEmpty> --------------------编程问答-------------------- 看Calendar 的API --------------------编程问答-------------------- 我现在用的struts2,没有logic这个标签,而且我是在数据库中存了19条这样的记录,想全部转换成周次和周几,然后在页面上把周几相同的周次写在一块儿,如何实现,由于是初学,对java里面一些东西还不是那么清晰

--------------------编程问答--------------------

// 都差不多, 你就将日期那个字段定义一个 String date,
// 具体转的, 都是看 Calendar 的API
 java.sql.Date dates = java.sql.Date.valueOf(date+"");   
   // 将 JDBC 日期转义形式的字符串转换成 Date 值。假设你这里格式正确 yyyy-mm-dd
   // 如果不是, 再转一下
 java.util.Calendar c = java.util.Calendar.getInstance();
 c.setTime(dates);
 int WEEK_OF_YEAR = c.get(c.WEEK_OF_YEAR) - 0; // 一年中的第几周, 减去前面N周
 int DAY_OF_WEEK = c.get(c.DAY_OF_WEEK); // 本周的星期几

--------------------编程问答-------------------- 那我先试一下 --------------------编程问答-------------------- 试了一下,还是不行,还不是很明白 --------------------编程问答-------------------- 想再问一下,现在计算周次和星期会了,还有一个问题就是,我该怎么把从数据库中取出的这个日期集合同时转化成周次和星期呢 --------------------编程问答-------------------- 楼主要的是----2011-8-22为第一周周一
这个需要对数据库取出的日期进行改变.
--------------------编程问答-------------------- 2011-8-22为第一周周一
以这个为基准,分别计算数据库返回的日期就好了

for example
String baseDate = "2011-08-22";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(baseDate));
int baseWeek = c.get(Calendar.WEEK_OF_YEAR);
int baseDay = c.get(Calendar.DAY_OF_WEEK);
List<Date> list = new ArrayList<Date>();
list.add(sdf.parse("2011-08-23")); //test data
list.add(sdf.parse("2011-09-01"));
list.add(sdf.parse("2011-09-10"));

for (Date d : list) { //print
    c.setTime(d);
    c.setFirstDayOfWeek(baseDay);
    System.out.printf("date:%s, week:%d, day:%d\n", sdf.format(d),
    c.get(Calendar.WEEK_OF_YEAR)-baseWeek+1, (8+c.get(Calendar.DAY_OF_WEEK)-baseDay)%7);
}
--------------------编程问答--------------------
引用 9 楼 qybao 的回复:
2011-8-22为第一周周一
以这个为基准,分别计算数据库返回的日期就好了

for example

Java code
String baseDate = "2011-08-22";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
……

可以 --------------------编程问答--------------------  要想学好Java,首先要知道Java的大致分类。我们知道,自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是SunONE(Open NetEnvironment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站,OA系统和ERP系统。J2SE开发桌面应用软件比起VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又最好学的就是J2EE了。J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。 

那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。然后你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?还好,SUN提供了Javabean可以把你的JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。最后,Javascript也是大家重点要掌握的,现在所有公司面试几乎没有不问Javascript的 

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!这说明你掌所的只是一些基础的知识,并没有完全理解!你现在最缺的是实际的工作经验和编程思想的培养,而不是书本上那些凭空想出来的程序。你应该发现你有一点,书本上的内容你都明白了,但是自已写东西还是不会,还是要依赖书本! 

接下来你得研究设计模式了。设计模式的书大家可以到尚学堂的网站www.bjsxt.com找到资料下载就可以了!设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用,MVC结构(把Model-View-Control分离开的设计思想)是必须要研究的,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,相比来说还是webwork2.0好一些。然后你再研究一下hibernate和Spring框架,相信你又会上一个台阶。 做完这些,接下来应该做一些实际的项目,不要写一些贪蛇食啊,坦克大战这种不实用的项目,要去写一些有实际应用价值的项目。 
--------------------编程问答--------------------
引用 7 楼 mengxue_xueer 的回复:
想再问一下,现在计算周次和星期会了,还有一个问题就是,我该怎么把从数据库中取出的这个日期集合同时转化成周次和星期呢


这里都会算过来了, 你还要算那个咯, 
还不是一样的算呢, 呵呵,
把2011-8-22,这天取得它是一年中的第几周, 你这里要当成第一周, 减一下就可以咯,
后面的, 都减一下这个数, 不就是呢,
--------------------编程问答-------------------- 恩,开始是有地方出错了,所以以为还不行,已经可以了,谢谢咯
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,