/*
* $Id: TimeModule.java,v 1.19 2002/09/16 08:05:03 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.core.time;
import anvil.core.Any;
import anvil.script.Context;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import java.text.SimpleDateFormat;
import java.text.DateFormatSymbols;
import java.text.ParseException;
/// @module anvil.time
/// Timestamps and calendar.
/**
* class TimeModule
*
* @author: Jani Lehtim�ki
*/
public class TimeModule
{
public static final Any ERA = Any.create(Calendar.ERA);
public static final Any YEAR = Any.create(Calendar.YEAR);
public static final Any MONTH = Any.create(Calendar.MONTH);
public static final Any WEEK_OF_YEAR = Any.create(Calendar.WEEK_OF_YEAR);
public static final Any WEEK_OF_MONTH = Any.create(Calendar.WEEK_OF_MONTH);
public static final Any DATE = Any.create(Calendar.DATE);
public static final Any DAY_OF_MONTH = Any.create(Calendar.DAY_OF_MONTH);
public static final Any DAY_OF_YEAR = Any.create(Calendar.DAY_OF_YEAR);
public static final Any DAY_OF_WEEK = Any.create(Calendar.DAY_OF_WEEK);
public static final Any DAY_OF_WEEK_IN_MONTH = Any.create(Calendar.DAY_OF_WEEK_IN_MONTH);
public static final Any AM_PM = Any.create(Calendar.AM_PM);
public static final Any HOUR = Any.create(Calendar.HOUR);
public static final Any HOUR_OF_DAY = Any.create(Calendar.HOUR_OF_DAY);
public static final Any MINUTE = Any.create(Calendar.MINUTE);
public static final Any SECOND = Any.create(Calendar.SECOND);
public static final Any MILLISECOND = Any.create(Calendar.MILLISECOND);
public static final Any ZONE_OFFSET = Any.create(Calendar.ZONE_OFFSET);
public static final Any DST_OFFSET = Any.create(Calendar.DST_OFFSET);
public static final Any FIELD_COUNT = Any.create(Calendar.FIELD_COUNT);
public static final Any SUNDAY = Any.create(Calendar.SUNDAY);
public static final Any MONDAY = Any.create(Calendar.MONDAY);
public static final Any TUESDAY = Any.create(Calendar.TUESDAY);
public static final Any WEDNESDAY = Any.create(Calendar.WEDNESDAY);
public static final Any THURSDAY = Any.create(Calendar.THURSDAY);
public static final Any FRIDAY = Any.create(Calendar.FRIDAY);
public static final Any SATURDAY = Any.create(Calendar.SATURDAY);
public static final Any JANUARY = Any.create(Calendar.JANUARY);
public static final Any FEBRUARY = Any.create(Calendar.FEBRUARY);
public static final Any MARCH = Any.create(Calendar.MARCH);
public static final Any APRIL = Any.create(Calendar.APRIL);
public static final Any MAY = Any.create(Calendar.MAY);
public static final Any JUNE = Any.create(Calendar.JUNE);
public static final Any JULY = Any.create(Calendar.JULY);
public static final Any AUGUST = Any.create(Calendar.AUGUST);
public static final Any SEPTEMBER = Any.create(Calendar.SEPTEMBER);
public static final Any OCTOBER = Any.create(Calendar.OCTOBER);
public static final Any NOVEMBER = Any.create(Calendar.NOVEMBER);
public static final Any DECEMBER = Any.create(Calendar.DECEMBER);
public static final Any UNDECIMBER = Any.create(Calendar.UNDECIMBER);
public static final Any AM = Any.create(Calendar.AM);
public static final Any PM = Any.create(Calendar.PM);
/// @function getTime
/// Returns the current time.
/// @synopsis Calendar getTime()
/// @synopsis Calendar getTime(string timezone)
/// @synopsis Calendar getTime(string timezone, string locale)
public static final Object[] p_getTime = { null, "*timezone", null, "*locale", null };
public static final Any getTime(Context context, String timezone, String locale)
{
TimeZone tz;
Locale lc;
if (timezone == null) {
tz = context.getTimeZone();
} else {
tz = TimeZone.getTimeZone(timezone);
}
if (locale == null) {
lc = context.getLocale();
} else {
lc = new Locale(context.getLanguage(), locale);
}
return new AnyCalendar(Calendar.getInstance(tz, lc));
}
/// @function getTimestamp
/// Returns the current timestamp, i.e. milliseconds since 1.1.1970.
/// @synopsis int getTimestamp()
public static final Any getTimestamp()
{
return Any.create(System.currentTimeMillis());
}
/// @function parseDate
/// Parses date string to Calendar object, using SimpleDateFormat.
/// Returns null if given date or format string was invalid.
/// Example. cal = anvil.time.parseDate("28.05.2002", "dd.MM.yyyy")
/// @synopsis Calendar parseDate(string date, string format)
public static final Object[] p_parseDate = { null, "date", "format" };
public static Any parseDate(Context context, String date, String format)
{
try {
DateFormatSymbols dfsymbols = new DateFormatSymbols(context.getLocale());
SimpleDateFormat df = new SimpleDateFormat(format, dfsymbols);
Calendar cal = Calendar.getInstance();
cal.setTime(df.parse(date));
return new AnyCalendar(cal);
} catch (ParseException e) {
throw context.BadParameter(e.getMessage());
}
}
public static final anvil.script.compiler.NativeNamespace __module__ =
new anvil.script.compiler.NativeNamespace(
"time",
TimeModule.class,
new Class[] {
AnyCalendar.class,
},
//DOC{{
""+
" @module anvil.time\n" +
" Timestamps and calendar.\n" +
" @function getTime\n" +
" Returns the current time.\n" +
" @synopsis Calendar getTime()\n" +
" @synopsis Calendar getTime(string timezone)\n" +
" @synopsis Calendar getTime(string timezone, string locale)\n" +
" @function getTimestamp\n" +
" Returns the current timestamp, i.e. milliseconds since 1.1.1970.\n" +
" @synopsis int getTimestamp()\n" +
" @function parseDate\n" +
" Parses date string to Calendar object, using SimpleDateFormat.\n" +
" Returns null if given date or format string was invalid.\n" +
" Example. cal = anvil.time.parseDate(\"28.05.2002\", \"dd.MM.yyyy\")\n" +
" @synopsis Calendar parseDate(string date, string format)\n"
//}}DOC
);
}