The times attempt to be ISO8601 compliant, for Hours and earlier.
Although I noticed that tidbit of information is missing for the docs,
we'll get it added. See TimeUtils
private static final Pattern SIMPLE = Pattern.compile(
"([+-])?((\\d+)[Dd])?\\s*((\\d+)[Hh])?\\s*((\\d+)[Mm])?\\s*((\\d+)[Ss])?\\s*((\\d+)([Mm][Ss])?)?"
);
public static long parseTimeString( String time ) {
String trimmed = time.trim();
long result = 0;
if( trimmed.length() > 0 ) {
Matcher mat = SIMPLE.matcher( trimmed );
if ( mat.matches() ) {
int days = (mat.group( SIM_DAY ) != null) ?
Integer.parseInt( mat.group( SIM_DAY ) ) : 0;
int hours = (mat.group( SIM_HOU ) != null) ?
Integer.parseInt( mat.group( SIM_HOU ) ) : 0;
int min = (mat.group( SIM_MIN ) != null) ?
Integer.parseInt( mat.group( SIM_MIN ) ) : 0;
int sec = (mat.group( SIM_SEC ) != null) ?
Integer.parseInt( mat.group( SIM_SEC ) ) : 0;
int ms = (mat.group( SIM_MS ) != null) ?
Integer.parseInt( mat.group( SIM_MS ) ) : 0;
long r = days * DAY_MS + hours * HOU_MS + min * MIN_MS
+ sec * SEC_MS + ms;
if( mat.group(SIM_SGN) != null && mat.group( SIM_SGN
).equals( "-" ) ) {
r = -r;
}
result = r;
} else if( "*".equals( trimmed ) || "+*".equals( trimmed
) ) {
// positive infinity
result = Long.MAX_VALUE;
} else if( "-*".equals( trimmed ) ) {
// negative infinity
result = Long.MIN_VALUE;
} else {
throw new RuntimeDroolsException( "Error parsing time
string: [ " + time + " ]" );
}
}
return result;
}
On 01/07/2011 06:21, Wolfgang Laun wrote:
2011/6/30 <rouvas(a)mm.di.uoa.gr
<mailto:rouvas@mm.di.uoa.gr>>
What are the available symbolics for temporal values?
That is, d is for days, m is for minutes, h is for hours, s is for
seconds.
Are there any other symbolics specifically for months and years?
You can use ms for millisecond. There are no universally acceptable
duration values for monts and years .
-W
I haven't found any mentioning of them in the Fusion manual.
I'm using 5.0.1
Thank you,
-Stathis
Wolfgang Laun wrote:
> See the "Fusion" manual, section on Temporal Reasoning/Temporal
Operators.
> Even when the facts aren't events, these operators can still be
applied to
> fields of type Date, e.g.
>
> $p1: Person( $dob1: dob )
> $p2: Person( $dob2: dob after[3d] $dob1 )
>
> -W
>
>
> On 28 June 2011 18:02, <rouvas(a)mm.di.uoa.gr
<mailto:rouvas@mm.di.uoa.gr>> wrote:
>
>> Hi list,
>>
>> I feel this should be an elementary question but unfortunately
I haven't
>> been able to find a solution.
>>
>> I would like to perform date arithmetic in the when part of a rule.
>>
>> For example, I would like to express something like:
>>
>> rule "Date compare rule"
>> dialect "mvel"
>> when
>> a : A()
>> b : B( a.creationDate <= b.creationDate after 3 months)
>> then
>> ...
>> end
>>
>> Apart from using eval()'s is there any other way to express
these types
>> of
>> comparisons?
>>
>> Thank you for your time,
>> -Stathis
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org <mailto:rules-users@lists.jboss.org>
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users