1.计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year); //year 为 int
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
(2) Date转化为Calendar
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
3.格式化输出日期时间 (这个用的比较多)
Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=df.format(date);
System.out.println(time);
4.计算一年中的第几星期
(1)计算某一天是一年中的第几星期
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,;
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno=cal.get(Calendar.WEEK_OF_YEAR);
(2)计算一年中的第几星期是几号
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
输出:
2006-01-02
5.add()和roll()的用法(不太常用)
(1)add()方法
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,;
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date=cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
2006-08-30
2006-09-03
(2)roll方法
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,;
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
2006-09-29
2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;
6.计算两个任意时间中间的间隔天数(这个比较常用)
(1)传进Calendar对象
public int getIntervalDays(Calendar startday,Calendar endday)...{
if(startday.after(endday))...{
Calendar cal=startday;
startday=endday;
endday=cal;
}
long sl=startday.getTimeInMillis();
long el=endday.getTimeInMillis();
long ei=el-sl;
return (int)(ei/(1000*60*60*24));
}
(2)传进Date对象
public int getIntervalDays(Date startday,Date endday)...{
if(startday.after(endday))...{
Date cal=startday;
startday=endday;
endday=cal;
}
long sl=startday.getTime();
long el=endday.getTime();
long ei=el-sl;
return (int)(ei/(1000*60*60*24));
}
(3)改进精确计算相隔天数的方法
public int getDaysBetween (Calendar d1, Calendar d2) ...{
if (d1.after(d2)) ...{
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
}
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
int y2 = d2.get(Calendar.YEAR);
if (d1.get(Calendar.YEAR) != y2) ...{
d1 = (Calendar) d1.clone();
do ...{
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
d1.add(Calendar.YEAR, 1);
} while (d1.get(Calendar.YEAR) != y2);
}
return days;
}
注意:通过上面的方法可以衍生出求任何时间,如要查出邮箱三周之内收到的邮件(得到当前系统时间-再得到三周前时间)用收件的时间去匹配 最好装化成 long去比较
如:1年前日期(注意毫秒的转换)
java.util.Date myDate=new java.util.Date();
long myTime=(myDate.getTime()/1000)-60*60*24*365;
myDate.setTime(myTime*1000);
String mDate=formatter.format(myDate);
7. String 和 Date ,Long 之间相互转换 (最常用)
字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)
通常我们取时间跨度的时候,会substring出具体时间--long-比较
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");
long dvalue=d.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
8. 通过时间求时间
年月周求日期
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
java.util.Date date2= formatter2.parse("2003-05 5 星期五");
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
求是星期几
mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);
9. java 和 具体的数据库结合
在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date 类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver 数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
你可以使用dateFormat定义时间日期的格式,转一个字符串即可
class Datetest{
*method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
*@param dateString 需要转换为timestamp的字符串
*@return dataTime timestamp
public final static java.sql.Timestamp string2Time(String dateString)
throws java.text.ParseException {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//设定格式
//dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
return dateTime;
}
*method 将字符串类型的日期转换为一个Date(java.sql.Date)
*@param dateString 需要转换为Date的字符串
*@return dataTime Date
public final static java.sql.Date string2Date(String dateString)
throws java.lang.Exception {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
return dateTime;
}
public static void main(String[] args){
Date da = new Date();
注意:这个地方da.getTime()得到的是一个long型的值
System.out.println(da.getTime());
由日期date转换为timestamp
第一种方法:使用new Timestamp(long)
Timestamp t = new Timestamp(new Date().getTime());
System.out.println(t);
第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)
Timestamp tt = new Timestamp(Calendar.getInstance().get(
Calendar.YEAR) - 1900, Calendar.getInstance().get(
Calendar.MONTH), Calendar.getInstance().get(
Calendar.DATE), Calendar.getInstance().get(
Calendar.HOUR), Calendar.getInstance().get(
Calendar.MINUTE), Calendar.getInstance().get(
Calendar.SECOND), 0);
System.out.println(tt);
try {
String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串
String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串
Date date1 = string2Date(sToDate);
Timestamp date2 = string2Time(sToTimestamp);
System.out.println("Date:"+date1.toString());//结果显示
System.out.println("Timestamp:"+date2.toString());//结果显示
}catch(Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Calendar API :创建基本的API ,以通过使用Python的get,post,put和delete来实现REST原理,并同时使用它 Crunchbase API :使用Crunchbase API可以按功能对行业进行分组 gcsa库:概述了Python中的gcsa库,用于...
这是使用 Google Calendar API 的一个简单实用的例子,只是插入模式。 调用 AsyncTask 并发送一个 JSONArray。 @Override protected void onCreate( Bundle savedInstanceState) { JSONArray as = new ...
本压缩包详尽列举了JavaAPI当中的System、Runtime、Math、Date、Calendar类的实例,特别是日期格式与字符串格式的各种灵活转换。更多内容请参见:http://blog.csdn.net/zhongkelee
【标题】:“调度程序:Google Calendar API练习” 在IT领域,调度程序通常指的是自动化安排任务或事件的系统,而在这个项目中,我们关注的是利用Google Calendar API来创建一个功能丰富的调度应用。Google ...
"Example-HowTo-CalendarAPI-GAE" 提供了一个完整的示例项目,展示了如何将Google Calendar API与GAE平台集成,实现日历事件的创建、读取、更新和删除等功能。 首先,了解Google Calendar API v3是Google提供的一种...
在开发桌面应用程序时,有时需要集成外部服务,如Google Calendar API,来实现日历功能。本文将详细讲解如何使用Google Calendar API与Java编程语言结合,创建一个桌面应用,以实现与Google日历的交互。 首先,我们...
jquery.google.calendar 它是一个 jQuery 插件,它使用 Google Calendar API v3 根据在 Google Calendar 中注册的内容创建日历。操作环境这是一个 jQuery 插件,所以你需要 jQuery。 使用 jQuery 1.10.2 确认操作。...
今天特别整理了针对Java中的Calendar日历API用法完全解析,通过Calendar API我们可以对Calendar所提供的时间日期字段进行各种自定义操作,首先还是从Calendar的基础入手:
基于 Google Calendar API 的 Perl 中基于控制台的日历。 程序需要在机器中安装以下 perl 模块才能运行。 JSON 数据::格式::漂亮::控制台 运行程序: perl calendar.pl accesstoken 为了生成访问令牌: 到。 ...
演示如何使用Google Calendar API的示例和教程 入门 阅读完本教程后,您应该可以使用Google Calendar API来运行一个Android项目。 本教程假定您使用的是 (SDK 1.1或更高版本),API 22或更高版本以及Google Play...
在APICloud平台上,`UICalendar`提供了丰富的API接口,使得开发者能够轻松地集成到自己的应用程序中。 `UICalendar`的核心特性包括: 1. **样式定制**:开发者可以调整日历的颜色方案,字体大小,以及整体布局,使...
这个简单的应用是为与Google Calendar API一起练习而构建的,可帮助您计算上个月的项目总时间。 目前,它将循环显示您至少具有writer权限的所有日历。 假设: 休息日被标记为全天活动 与其他事件重叠的事件应更改...
在搜索框中输入“ Google Calendar”,然后在结果中单击“ Google Calendar API”。 点击页面顶部的“启用”链接。 在左侧的边栏中,选择“凭据”。 如果您还没有这样做,请点击“创建凭据”来创建“ OAuth...
在本文中,我们将深入探讨如何在Node.js环境中利用Google Calendar API来检索用户的日历事件。首先,我们需要了解Node.js和Google Calendar API的基本概念。 **Node.js** Node.js是一个基于Chrome V8引擎的...
从 Google 日历生成 RSS2 提要(和时事通讯) 2015 年,谷歌从其日历产品中对 RSS 提要的。 我不擅长互联网搜索,也找不到十几个替代这个功能的项目,所以我自己写了一个。 这是一个旨在从 cronjob 运行的脚本。...
标题中的"TerminalCalendar"是一个项目,它允许用户通过命令行工具与Google Calendar API交互,创建新的日历事件。这个功能的实现是基于JavaScript编程语言,因此我们可以通过JavaScript的知识点来理解其工作原理。 ...
(1)设置API密钥和日历ID:在使用beehive.calendar.js前,开发者需要在Google Cloud Console中创建项目,启用Calendar API,并获取API密钥和日历ID。 (2)引入库文件:将beehive.calendar.js文件添加到HTML页面中...
构建一个Alexa Blackbaord助手 项目概览: 最低要求Blackboard Learn 3400.9.0(即将发布) 可以在AWS Marketplace上... 该项目是使用3400.9.0中引入的Calendar API以及一些成绩簿V2 API的Alexa Skill的功能起点。 这
【标题】"mlh-class-scheduler" 是一个利用Google Calendar API构建的简易课程调度系统,其目的是帮助用户高效地管理他们的学习时间表。这个项目基于一个教程,将静态网页与Google的日历服务相结合,实现了一个实用...
使用VITians的Google Calendar API的时间表管理网络应用 设置 创建环境(可选 :fast-forward_button: ) conda create --name zeitplan python=3.7 激活环境(可选 :fast-forward_button: ) conda activate ...