`
功夫小当家
  • 浏览: 182921 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DateTime 类常用API

    博客分类:
  • java
阅读更多

         开发中经常使用到日期,我比较常用的是joda-time包中的DateTime类,里面提供了的api基本满足了日常需求,以下是常用API的使用:

package test;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import org.joda.time.DateTime;
import org.joda.time.DateTimeConstants;
import org.joda.time.DateTimeZone;
import org.joda.time.Duration;
import org.joda.time.Interval;
import org.joda.time.LocalDate;
import org.joda.time.LocalTime;
import org.joda.time.Period;
import org.joda.time.PeriodType;

public class TestDateTime {
	
	public static void main(String args[]) {
		/*
		 * 1.初始化
		 */
		//方法一:取系统点间
		DateTime dt = new DateTime();

		//方法二:通过java.util.Date对象生成
		dt = new DateTime(new Date());

		//方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒)
		dt = new DateTime(2012, 5, 20, 13, 14, 0, 0);

		//方法四:ISO8601形式生成
		dt = new DateTime("2012-05-20");
		dt = new DateTime("2012-05-20T13:14:00");

		//只需要年月日的时候
		LocalDate localDate = new LocalDate(2009, 9, 6);// September 6, 2009

		//只需要时分秒毫秒的时候
		LocalTime localTime = new LocalTime(13, 30, 26, 0);// 1:30:26PM

		/*
		 * 2.获取年月日点分秒 
		 */
		//年  
		int year = dt.getYear();  
		//月  
		int month = dt.getMonthOfYear();  
		//日  
		int day = dt.getDayOfMonth();  
		//星期  
		int week = dt.getDayOfWeek();  
		//点  
		int hour = dt.getHourOfDay();  
		//分  
		int min = dt.getMinuteOfHour();  
		//秒  
		int sec = dt.getSecondOfMinute();  
		//毫秒  
		int msec = dt.getMillisOfSecond();  
		
	 
		// 判断当前是星期几
		switch(dt.getDayOfWeek()) {  
		case DateTimeConstants.SUNDAY:  
		    System.out.println("星期日");  
		    break;  
		case DateTimeConstants.MONDAY:  
		    System.out.println("星期一");  
		    break;  
		case DateTimeConstants.TUESDAY:  
		    System.out.println("星期二");  
		    break;  
		case DateTimeConstants.WEDNESDAY:  
		    System.out.println("星期三");  
		    break;  
		case DateTimeConstants.THURSDAY:  
		    System.out.println("星期四");  
		    break;  
		case DateTimeConstants.FRIDAY:  
		    System.out.println("星期五");  
		    break;  
		case DateTimeConstants.SATURDAY:  
		    System.out.println("星期六");  
		    break;  
		}  
		
		/*
		 * 3.与JDK日期对象的转换
		 */	
		//转换成java.util.Date对象  
		Date d1 = new Date(dt.getMillis());  
		Date d2 = dt.toDate();  
		  
		//转换成java.util.Calendar对象  
		Calendar c1 = Calendar.getInstance();  
		c1.setTimeInMillis(dt.getMillis());  
		Calendar c2 = dt.toCalendar(Locale.getDefault());
		
		
		/*
		 * 4.日期前后推算 (这个方法比较实用)
		 */
		//天
		DateTime yesterday = dt.minusDays(1);   
		DateTime tomorrow = dt.plusDays(1);  

		//月
		DateTime lastMonth = dt.minusMonths(1);        
		DateTime nextMonth = dt.plusMonths(1);   
		
		//周
		DateTime lastWeek = dt.minusWeeks(-1);        
		DateTime nexWeek = dt.plusWeeks(1);
		
		//年  
		DateTime lastYear = dt.minusYears(1);          
		DateTime nextYear = dt.plusYears(1);  
		
		
		/*
		 * 5.取特殊日期 
		 */		  
		//月末日期    
		DateTime lastday = dt.dayOfMonth().withMaximumValue();  
		  
		//90天后那周的周一  
		DateTime firstday = dt.plusDays(90).dayOfWeek().withMinimumValue(); 
		
		
		/*
		 * 6.设置时区
		 */
		//日本时间  
		DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo"));  
		dt = new DateTime();  
		  
		//伦敦时间  
		dt = new DateTime(DateTimeZone.forID("Europe/London"));  
		
		//东八区时间
		DateTimeZone.setDefault(DateTimeZone.forID("Asia/Shanghai"));
		
		
		/*
		 * 7.计算区间
		 */
		DateTime begin = new DateTime("2012-02-01");  
		DateTime end = new DateTime("2012-05-01");  
		  
		//计算区间毫秒数  
		Duration d = new Duration(begin, end);  
		long time = d.getMillis();  
		  
		//计算区间天数  
		Period p = new Period(begin, end, PeriodType.days());  
		int days = p.getDays();  
		  
		//计算特定日期是否在该区间内  
		Interval i = new Interval(begin, end);  
		boolean contained = i.contains(new DateTime("2012-03-01"));  
		
		
		/*
		 * 8.日期比较 
		 */
		DateTime dt1 = new DateTime("2012-02-01");  
		DateTime dt2 = new DateTime("2012-05-01");  
		  
		//和系统时间比  
		boolean b1 = dt1.isAfterNow();  
		boolean b2 = dt1.isBeforeNow();  
		boolean b3 = dt1.isEqualNow();  
		  
		//和其他日期比  
		boolean f1 = dt1.isAfter(dt2);  
		boolean f2 = dt1.isBefore(dt2);  
		boolean f3 = dt1.isEqual(dt2);  

		/*
		 * 9.格式化输出 
		 */
		DateTime dateTime = new DateTime();  
		  
		String s1 = dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa");  
		String s2 = dateTime.toString("yyyy-MM-dd HH:mm:ss");  
		String s3 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");  
		String s4 = dateTime.toString("yyyy/MM/dd HH:mm ZZZZ");  //ZZZZ 表示 时区
		String s5 = dateTime.toString("yyyy/MM/dd HH:mm Z");  	
	}
}

 

 

分享到:
评论

相关推荐

    详解在c#语言中DateTime类的使用及其常用技巧.txt

    详解在c#语言中DateTime类的使用及其常用技巧 大家相互学习.

    MyHelper-master-C#工具类含API文档

    05.DateTime的辅助类 MyDateTimeHelper.cs 06.常用的目录操作辅助类 MyDirHelper.cs 07.枚举操作辅助类 MyEnumHelper 08.Excel操作辅助类(无需VBA引用) MyExcelHelper.cs 09.打开、保存文件对话框操作辅助类 ...

    举例讲解Python常用模块

    日期时间类,主要熟悉API,时区的概念与语言无关。 from datetime import datetime as dt dt.utcnow() # 系统UTC时间 dt.now() # 系统当前时间 dt(2018, 3, 27, 14, 30) # 获得2018-3-27 14:30对应的datetime对象 ...

    做的408答题小程序的后端,使用Python的Flask设计

    这是一个给女朋友毕业设计的后端计算机复习题小程序的后端,Python3.5以上版本均可以使用(自己用3.7在公司测试用3.8都可以),采用API传递JSON的方式进行连接管理,用到了MYSQL,session等常用技术。 采用我也不...

    Python 3教程(廖雪峰).rar

    Day 9 - 编写 API 499 Day 10 - 用户注册和登录 501 Day 11 - 编写日志创建页 511 Day 12 - 编写日志列表页 520 Day 13 - 提升开发效率 527 Day 14 - 完成 Web App 532 Day 15 - 部署 Web App 534 Day 16 - ...

    back-end-do:毕业设计后端程序 - 是一个题目登陆的WebAPI接口

    back-end-do这是一个给女朋友毕业设计的后端计算机复习题小程序的后端,Python3.5以上版本均可以使用(自己用3.7在公司测试用3.8都可以),采用API传递JSON的方式进行连接管理,用到了MYSQL,session等常用技术。...

    廖雪峰Pyhton教程3.x版[完整版]

    22.9 Day 9 - 编写API 410 22.10 Day 10 - 用户注册和登录 412 22.11 Day 11 - 编写日志创建页 423 22.12 Day 12 - 编写日志列表页 432 22.13 Day 13 - 提升开发效率 439 22.14 Day 14 - 完成Web App 443 22.15 Day ...

    廖雪峰python3 完整带索引,图片 最新教程 pdf版

    datetime collections base64 struct hashlib hmac itertools contextlib urllib XML HTMLParser 常用第三方模块 Pillow requests chardet psutil virtualenv 图形界面 网络编程 TCP/IP简介 TCP编程 UDP编程 电子...

    oracle.dart:Dart本机扩展为Oracle提供数据库访问

    Oracle 通过类似于OCCI的API为Dart提供Oracle...Dart垃圾收集了许多常用类的OCCI包装器。 支持: 基本类型(字符串,数字等) 日期和时间戳记为Dart DateTime类型 BLOB CLOB 执照 与自由软件一样免费。 LGPL v

    MySQL 5.1中文手冊

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    MySQL 5.1参考手册 (中文版)

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    mysql官方中文参考手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    MYSQL中文手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在...

    MySQL 5.1参考手册中文版

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在...

    MySQL 5.1参考手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    2.4.6 datetime类型 81 2.5 引用类型(类) 82 2.5.1 object类 82 2.5.2 string类 83 2.5.3 xml字面量 87 2.5.4 dbnull类和isdbnull()函数 89 2.6 参数传递 89 2.7 变量的作用域 91 2.8 使用对象 92 ...

    MySQL5.1参考手册官方简体中文版

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    ARCH4系统开发指南

    2 常用功能处理方式 9 2.1 如何执行条件查询 9 2.1.1 查询示例 9 2.1.2 查询限制 9 2.1.2.1 Like 9 2.1.2.2 In 10 2.1.2.3 Between 10 2.1.2.4 Equal 10 2.1.2.5 NotEqual 10 2.1.2.6 GreaterThan 10 2.1.2.7 ...

    MySQL 5.1官方简体中文参考手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

Global site tag (gtag.js) - Google Analytics