分享错误,学习生活

JAVA中的Calendar—————js日历控件



1.时区(TimeZone)和地区(Locale)

时区:这个名称有点不准确,其实应该叫“时间体系和偏移量”。

时间体系有很多种,古时中国人喜欢用皇帝名+登基时间来表示时间,这也是一种时间体系。现在比较常用的时间体系是GMT和UTC。GMT也就是格林威治时间,也叫格林尼治时间,从1970-01-01 00:00:00开始计算。UTC是在GMT基础上设计的,两者误差很小,作为凡人可以忽略。如果是要求很高的军工行业,则请查阅其他资料吧。

偏移量主要是针对GMT和UTC体系把世界划分为24个区而设计的。常见的东八区“GMT+8”。

地区:所属地区。在中国一个星期的第一天是星期一,在西方第一天是星期日,这个小细节不注意可能会导致计算星期的时候出问题。

  1. // 全局显示定义最省事安全  
  2. Locale.setDefault(Locale.ENGLISH);//推荐用英语地区的算法  
  3. TimeZone.setDefault(TimeZone.getTimeZone());  
  4.           
  5. // 局部定义  
  6. Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(), Locale.ENGLISH);  
  1. // 全局显示定义最省事安全
  2. Locale.setDefault(Locale.ENGLISH);//推荐用英语地区的算法
  3. TimeZone.setDefault(TimeZone.getTimeZone());
  4. // 局部定义
  5. Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(), Locale.ENGLISH);

2.初始值

代码如下,值得指出的是由于我们的时区设置是GMT+8,所以打印格林威治时间得到的是1970-01-01 08:00:00。

  1. Calendar cal = Calendar.getInstance();//得到当前时间        
  2. cal.setTimeInMillis(0);//转换成格林威治时间  
  1. Calendar cal = Calendar.getInstance();//得到当前时间
  2. cal.setTimeInMillis(0);//转换成格林威治时间

3.获取值

  1. cal.get(Calendar.YEAR);//年  
  2. cal.get(Calendar.MONTH) + 1;//月(脑残要+1)  
  3. cal.get(Calendar.DATE);//日  
  4. cal.get(Calendar.HOUR_OF_DAY);//时  
  5. cal.get(Calendar.MINUTE);//分  
  6. cal.get(Calendar.SECOND);//秒  
  7. cal.get(Calendar.DAY_OF_WEEK);  
  1. cal.get(Calendar.YEAR);//年
  2. cal.get(Calendar.MONTH) + 1;//月(脑残要+1)
  3. cal.get(Calendar.DATE);//日
  4. cal.get(Calendar.HOUR_OF_DAY);//时
  5. cal.get(Calendar.MINUTE);//分
  6. cal.get(Calendar.SECOND);//秒
  7. cal.get(Calendar.DAY_OF_WEEK);//星期(Locale.ENGLISH情况下,周日是1,剩下自己推算)

如果拿时间不是为了计算而是展示出来,肯定用SimpleDateFormart了,模式为yyyy-MM-dd HH:mm:ss

4.设置值

  1. cal.set(201354134451);//年月日时分秒(月份0代表1月)  
  2. cal.set(Calendar.YEAR, 2014);//年  
  3. cal.set(Calendar.MONTH, 7);//月(月份0代表1月)  
  4. cal.set(Calendar.DATE, 11);//日  
  5. cal.set(Calendar.HOUR_OF_DAY, 15);//时  
  6. cal.set(Calendar.MINUTE, 33);//分  
  7. cal.set(Calendar.SECOND, 32);//秒  
  8. //周比较含糊免了  
  1. cal.set(2013, 5, 4, 13, 44, 51);//年月日时分秒(月份0代表1月)
  2. cal.set(Calendar.YEAR, 2014);//年
  3. cal.set(Calendar.MONTH, 7);//月(月份0代表1月)
  4. cal.set(Calendar.DATE, 11);//日
  5. cal.set(Calendar.HOUR_OF_DAY, 15);//时
  6. cal.set(Calendar.MINUTE, 33);//分
  7. cal.set(Calendar.SECOND, 32);//秒
  8. //周比较含糊免了

5.运算值

  1. cal.add(Calendar.YEAR, 1);//年  
  2. cal.add(Calendar.MONTH, 1);//月  
  3. cal.add(Calendar.DATE, 1);//日  
  4. cal.add(Calendar.HOUR_OF_DAY, -1);//时  
  5. cal.add(Calendar.MINUTE, 1);//分  
  6. cal.add(Calendar.SECOND, 1);//秒  
  7. cal.add(Calendar.DATE, 7);//周  

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Calendar获取年月日,时分秒,等等的运用

1.问题描述

使用calendar来代替Date

2.方式:

Calendar获取年月日,时分秒,这一周的第几天,这一个月的第几天,日期比较,日期毫秒数,等等的运用。。。。

3.代码:

    1. import java.util.Calendar;  
    2.   
    3. /** 
    4.  * Calendar的简单使用 
    5.  * @author _jon 
    6.  * 
    7.  */  
    8. public class TestCalendar {  
    9.     public static void main(String[] args) {  
    10.         /** 
    11.          * 获取的calendar实例的时间是当前时间 
    12.          */  
    13.         //得到Calendar的实例  
    14.         Calendar calendar = Calendar.getInstance();  
    15.           
    16.           
    17.         /** 
    18.          * 获取 年 ,月 ,日 
    19.          */  
    20.         System.out.println(calendar.get(Calendar.YEAR));  
    21.         //默认从0-11  
    22.         System.out.println(calendar.get(Calendar.MONTH));  
    23.         System.out.println(calendar.get(Calendar.DATE));  
    24.           
    25.           
    26.         /** 
    27.          * 获取时分秒 
    28.          */  
    29.         //24小时制  
    30.         System.out.println(calendar.get(Calendar.HOUR_OF_DAY));  
    31.         //12小时制  
    32.         //System.out.println(calendar.get(Calendar.HOUR));  
    33.         System.out.println(calendar.get(Calendar.MINUTE));  
    34.         System.out.println(calendar.get(Calendar.SECOND));  
    35.           
    36.         /** 
    37.          * 这一年的第几天,这个月的第几天,这周的第几天 
    38.          */  
    39.         System.out.println(calendar.get(Calendar.DAY_OF_YEAR));  
    40.         System.out.println(calendar.get(Calendar.DAY_OF_MONTH));  
    41.         System.out.println(calendar.get(Calendar.DAY_OF_WEEK));  
    42.           
    43.         /** 
    44.          * 得到时间,Fri Aug 19 14:33:03 CST 2016 
    45.          * 得到本周第一天 
    46.          * 得到时间的毫秒数 
    47.          */  
    48.         System.out.println(calendar.getTime());  
    49.         System.out.println(calendar.getFirstDayOfWeek());  
    50.         System.out.println(calendar.getTimeInMillis());  
    51.           
    52.     //  System.out.println(calendar.compareTo(anotherCalendar));  
    53.     }  
    54. }  
    1. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 在今年7月份时候 写了一篇关于 "JS日历控件" 的文章 , 当时仅仅支持 年月日 的日历控件,如今优化例如以下:

     1. 在原基础上 支持 yyyy-mm-dd 的年月日的控件。
     2. 在原基础上添加支持 yyyy-mm-dd HH:MM 年月日时分的控件。
     3. 在原基础上添加支持 yyyy-mm-dd HH:MM:SS 年月日时分秒的控件。
     4. 添加确定button 及 今天 和关闭button。

当我切换到其它年份的时候,我点击 "今天"button 就能够返回当前的年月份。

 
配置项例如以下:
 
  targetCls
  渲染日历的class 默觉得空
  beginyear   日历的開始年份 默觉得1949
  endyear   日历的结束年份 默觉得2049
  date   new Date() 默认日期 也能够在input框自己自己定义值
  type

  日期格式。眼下支持三种格式:

     1. "yyyy-mm-dd" 年月日

     2. "yyyy-mm-dd HH:MM:SS" 年月日时分秒。

    3. "yyyy-mm-dd HH:MM" 年月日时分

  separator 日期的分隔符 默觉得 -
  wday  0, 设置周的第一天,默认从第一天開始
  language

对象:

{

      year: "年",

      month: "月",

      monthList:       ["1","2","3","4","5","6","7","8","9","10","11","12"],

      weekList: ["日","一","二","三","四","五","六"]}

比方例如以下demo年月日的示意图例如以下:

时分秒的demo例如以下:

时分的demo例如以下:

HTML代码例如以下:

1
2
3
4
5
6
<p>
  開始时间:
   <input name="mydate" type="text"   style="width:200px;">
  结束时间:
  <input name="mydate2" type="text" style="width:200px;" >
</p>

当然在头部要引入例如以下JS文件:

<script src="jquery-1.9.1.js"></script>

<script src="calendar.js"></script>

依赖于jquery框架。

后面的是日历控件JS

初始化方式例如以下:

1
2
3
4
5
6
7
8
9
10
<script>
$('.input_cxcalendar').each(function(){
   var a = new Calendar({
       targetCls: $(this),
       type: 'yyyy-mm-dd' 或者 ‘yyyy-mm-dd HH:MM:SS’ 或者 ‘yyyy-mm-dd HH:MM’;
   },function(val){
       console.log(val);  // 回调函数 当前选中的值
   });
});
</script> 

代码分析:

   1. 页面初始化时。调用init()方法,生成日历控件代码,例如以下所看到的:

       

    2. 初始化完毕后,调用渲染日历面板的函数 _renderCalendarPanel(),例如以下所看到的:\

        

   3. 在_renderCalendarPanel()函数做一些推断例如以下:

      

     4.  在第三步定义了每月的天数 self.month_day; 定义了周末(周六,周日)的位置是第几个,例如以下所看到的:

          

   接着代码例如以下:

 

例如以下设置wday = 2

_dayNumOfMonth函数的意思例如以下:

5. 以下我们接着来看看 通过春节 月份来渲染天数 _renderBody()函数,例如以下:

    

例如以下所看到的

接着:

等。



暂无评论

发表评论

电子邮件地址不会被公开。