利用java日期类生成数据仓库维度表

利用java日期类生成数据仓库维度表

Date类:

最基础的日期时间类,返回一个相对日期的毫秒数。精确到毫秒,但不支持日期的国际化和分时区显示。Date 类从Java 开发包(JDK)1.0 就开始进化,当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年。 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了,这种改进旨在更好的处理日期数据的国际化格式。

 

Calender类:

相对于Date更加强大的时间类,是抽象类,提供了常规的日期修改功能和国际化支持。

 

GregorianCalendar类:

提供处理日期的方法,用于计算日期,是Calendar类的子类,有用的是有个判断闰年的方法。

 

DateFormat类:

可以接受字符串输入、输出,提供了将日期/时间信息进行格式化处理的功能。

 

SimpleDateFormat类:

功能更强大的日期时间格式化类,自定义格式化日期和时间。

 

java.util.Locale类:

描述特定的地理、政治、文化上的地区,Locale对象主要封装了“地区”和“语言种类”两方面 .

 

 下面用代码来模拟生成日期维度表的一些字段值:

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Locale;

 

public class DateUtil {

         Localeloc = new Locale("zh", "CN");

//      Localeloc = new Locale("en", "CN");

         Calendarcalendar = new GregorianCalendar(loc);

        

         publicvoid init(){

                   calendar.set(2014,9, 10);

         }

        

         publicDate add(int day){

                   calendar.add(Calendar.DAY_OF_MONTH,day);

                   returncalendar.getTime();

         }

        

         publicvoid showDate(Date date){

                   p("TimeInMillis",calendar.getTimeInMillis()+"");

                  

                   p("ShortDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT,loc)

                                     .format(date));

                   p("MEDIUMDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM,loc)

                                     .format(date));

                   p("LONGDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.LONG, loc)

                                     .format(date));

                   p("LONGFULL",java.text.DateFormat.getDateInstance(java.text.DateFormat.FULL, loc)

                                     .format(date));

                  

                   SimpleDateFormatsdf = new SimpleDateFormat("D",loc);

                   p("dayin year",sdf.format(date));

                   sdf.applyPattern("d");

                   p("dayin month",sdf.format(date));

                   sdf.applyPattern("EEEE");

                   p("dayname",sdf.format(date));

                   sdf.applyPattern("E");

                   p("dayabbreviation",sdf.format(date));

                  

                   sdf.applyPattern("ww");

                   p("weekin year",sdf.format(date));

                   sdf.applyPattern("W");

                   p("weekin month",sdf.format(date));

                  

                   sdf.applyPattern("MM");

                  String month = sdf.format(date);

                   p("monthnumber",sdf.format(date));

                   sdf.applyPattern("MMMM");

                   p("monthname",sdf.format(date));

                   sdf.applyPattern("MMM");

                   p("monthabbreviation",sdf.format(date));

                  

                   sdf.applyPattern("yy");

                   p("year2",sdf.format(date));  

                   sdf.applyPattern("yyyy");

                   p("year4",sdf.format(date));

                  

                   intquarter_number = (int)Math.ceil( (Integer.parseInt(month) /3.0));

                   p("quertername","Q"+quarter_number);

                  

                   intfirst_day_of_week = calendar.getFirstDayOfWeek();

                   p("is_first_day_of_week",firstWeekDay(first_day_of_week));

         }

        

         publicvoid p(String desc,String date){

                   System.out.println(desc+ " : " + date);

         }

        

         publicvoid calAndShow(){

                   for(int i = 0; i < 3; i++) {

                            init();

                            showDate(add(i));

                            System.out.println();

                   }

         }

        

         publicString firstWeekDay(int first){

                   returnfirst == calendar.get(Calendar.DAY_OF_WEEK) ? "yes" : "no";

         }

        

         publicstatic void main(String[] args) {

                   DateUtild = new DateUtil();

                   d.calAndShow();

                   System.out.println(Math.ceil(11.0/3.0));

         }

}
 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。