commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Scholte (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LANG-379) Calculating A date fragment in any time-unit
Date Fri, 01 Feb 2008 08:57:08 GMT

    [ https://issues.apache.org/jira/browse/LANG-379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12564688#action_12564688
] 

Robert Scholte commented on LANG-379:
-------------------------------------

Henri,

thanks alot

> Calculating A date fragment in any time-unit
> --------------------------------------------
>
>                 Key: LANG-379
>                 URL: https://issues.apache.org/jira/browse/LANG-379
>             Project: Commons Lang
>          Issue Type: New Feature
>    Affects Versions: 2.3
>            Reporter: Robert Scholte
>            Priority: Minor
>             Fix For: 2.4
>
>         Attachments: DateUtils.patch, DateUtils_2.patch, DateUtilsFragmentTest.java,
LANG-379.patch
>
>
> These DateUtils-features can make it possible to calculate a date-part in any time-unit.
For example: the number of minutes of this year, the number of seconds of today, etc.
> I've started with some coding, and if there's enough interest we can make it more solid.

> public static long getFragmentInSeconds(Date date, int fragment) {
> 		return getFragment(date, fragment, Calendar.SECOND);
> 	}
> 	
> 	public static long getFragmentInMinutes(Date date, int fragment) {
> 		return getFragment(date, fragment, Calendar.MINUTE);
> 	}
> 	
> 	public static long getFragmentInHours(Date date, int fragment) {
> 		return getFragment(date, fragment, Calendar.HOUR_OF_DAY);
> 	}
> 	
> 	public static long getFragmentInDays(Date date, int fragment) {
> 		return getFragment(date, fragment, Calendar.DAY_OF_YEAR);
> 	}
> 	public static long getFragmentInSeconds(Calendar calendar, int fragment) {
> 		return getFragment(calendar, fragment, Calendar.SECOND);
> 	}
> 	
> 	public static long getFragmentInMinutes(Calendar calendar, int fragment) {
> 		return getFragment(calendar, fragment, Calendar.MINUTE);
> 	}
> 	
> 	public static long getFragmentInHours(Calendar calendar, int fragment) {
> 		return getFragment(calendar, fragment, Calendar.HOUR_OF_DAY);
> 	}
> 	
> 	public static long getFragmentInDays(Calendar calendar, int fragment) {
> 		return getFragment(calendar, fragment, Calendar.DAY_OF_YEAR);
> 	}
> 	
> 	private static long getFragment(Date date, int fragment, int unit) {
> 		Calendar calendar = Calendar.getInstance();
> 		calendar.setTime(date);
> 		return getFragment(calendar, fragment, unit);
> 	}
> 	private static long getFragment(Calendar calendar, int fragment, int unit) {
> 		long millisPerUnit = getMillisPerFragment(unit);
> 		long result = 0;
> 		switch (fragment) {
> 		case Calendar.YEAR:
> 			result += (calendar.get(Calendar.DAY_OF_YEAR) * MILLIS_PER_DAY) / millisPerUnit;
> 		case Calendar.MONTH:
> 			result += (calendar.get(Calendar.DAY_OF_MONTH) * MILLIS_PER_DAY) / millisPerUnit;
> 		case Calendar.DAY_OF_YEAR:
> 		case Calendar.DATE:
> 			result += (calendar.get(Calendar.HOUR_OF_DAY) * MILLIS_PER_HOUR) / millisPerUnit;
> 		case Calendar.HOUR_OF_DAY:
> 			result += (calendar.get(Calendar.MINUTE) * MILLIS_PER_MINUTE) / millisPerUnit;
> 		case Calendar.MINUTE:
> 			result += (calendar.get(Calendar.SECOND) * MILLIS_PER_SECOND) / millisPerUnit;
> 		case Calendar.SECOND:
> 			result += (calendar.get(Calendar.MILLISECOND) * 1) / millisPerUnit;
> 		}
> 		return result;
> 	}
> 	
> 	private static long getMillisPerFragment(int fragment) {
> 		long result = Long.MAX_VALUE;
> 		switch (fragment) {
> 		case Calendar.DAY_OF_YEAR:
> 		case Calendar.DATE:
> 			result = MILLIS_PER_DAY;
> 			break;
> 		case Calendar.HOUR_OF_DAY:
> 			result = MILLIS_PER_HOUR;
> 			break;
> 		case Calendar.MINUTE:
> 			result = MILLIS_PER_MINUTE;
> 			break;
> 		case Calendar.SECOND:
> 			result = MILLIS_PER_SECOND;
> 			break;
> 		case Calendar.MILLISECOND:
> 			result = 1;
> 			break;
> 		}
> 		return result;
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message