Java/J2ME/Date

Материал из Java эксперт
Версия от 18:01, 31 мая 2010; (обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Date Field

/*--------------------------------------------------
* Snooze.java
*
* Example from the book:     Core J2ME Technology
* Copyright John W. Muchow   http://www.CoreJ2ME.ru
* You may use/modify for any non-commercial purpose
*-------------------------------------------------*/
import java.util.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Timer;
import java.util.TimerTask;
public class Snooze extends MIDlet implements ItemStateListener, CommandListener
{
  private Display display;          // Reference to display object 
  private Form fmMain;              // The main form
  private Command cmSnooze;         // Start the timer
  private Command cmReset;          // Reset to current date/time
  private Command cmExit;           // Exit the MIDlet
  private DateField dfSnoozeTime;   // How long to snooze
  private int dateIndex;            // Index of the DateField on the Form
  private Date currentTime;         // Current time...changes when pressing reset
  private Timer tmSnooze;           // The timer - keeps track of system time
  private SnoozeTimer ttSnooze;     // Called by the timer
  private boolean dateOK = false;   // Was the user input valid?
  
  public Snooze()
  {
    display = Display.getDisplay(this);
    // The main form
    fmMain = new Form("When to sound the alarm:");
    // Save today"s date
    currentTime = new Date();
    
    // DateField with todays date as a default
    dfSnoozeTime = new DateField("", DateField.DATE_TIME);
    dfSnoozeTime.setDate(currentTime);
    // All the commands/buttons
    cmSnooze = new Command("Snooze", Command.SCREEN, 1);
    cmReset = new Command("Reset", Command.SCREEN, 1);
    cmExit = new Command("Exit", Command.EXIT, 1);    
    
    // Add to form and listen for events
    dateIndex = fmMain.append(dfSnoozeTime);
    fmMain.addCommand(cmSnooze);
    fmMain.addCommand(cmReset);    
    fmMain.addCommand(cmExit);    
    fmMain.setCommandListener(this);
    fmMain.setItemStateListener(this);    
  }
  public void startApp ()
  {
    display.setCurrent(fmMain);
  }
  public void pauseApp()
  { }
  
  public void destroyApp(boolean unconditional)
  { }
  public void itemStateChanged(Item item)              
  {
    if (item == dfSnoozeTime)
    {
      // If the user selected date and/or time that is earlier 
      // than today, set a flag. We are using getTime() 
      // method of the Date  class, which returns the # of 
      // milliseconds since January 1, 1970
      if (dfSnoozeTime.getDate().getTime() < currentTime.getTime())
        dateOK = false;
      else
        dateOK = true;
    }        
  }
  
  public void commandAction(Command c, Displayable s)
  {
    if (c == cmSnooze)
    {
      if (dateOK == false)
      {
        Alert al = new Alert("Unable to set alarm", "Please choose another date and time.", null, null);
        al.setTimeout(Alert.FOREVER);
        al.setType(AlertType.ERROR);
        display.setCurrent(al);      
      }
      else
      {
        // Create a new timer
        tmSnooze = new Timer();
        ttSnooze = new SnoozeTimer();
        // Amount of time to delay
        long amount = dfSnoozeTime.getDate().getTime() - currentTime.getTime();
        tmSnooze.schedule(ttSnooze,amount);          
        // Remove the commands
        fmMain.removeCommand(cmSnooze);
        fmMain.removeCommand(cmReset);    
        
        // Remove the DateField
        fmMain.delete(dateIndex);
        
        // Change the Form message
        fmMain.setTitle("Snoozing...");
      }
    }
    else if (c == cmReset)
    {
      // Reset to the current date/time
      dfSnoozeTime.setDate(currentTime = new Date());
    }
    else if (c == cmExit)
    {
      destroyApp(false);
      notifyDestroyed();
    }
  }
  // Handle the timer task
  private class SnoozeTimer extends TimerTask
  {
    public final void run()
    {
      Alert al = new Alert("Time to wake up!");
      al.setTimeout(Alert.FOREVER);
      al.setType(AlertType.ALARM);
      AlertType.ERROR.playSound(display);
      display.setCurrent(al);       
      
      // Cancel this timer task
      cancel(); 
    }
  }
}





Date Today

//jad file (please verify the jar size)
/*
MIDlet-Name: DateToday
MIDlet-Version: 1.0
MIDlet-Vendor: MyCompany
MIDlet-Jar-URL: DateToday.jar
MIDlet-1: DateToday, , DateToday
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
MIDlet-JAR-SIZE: 100
*/
import java.util.Date;
import javax.microedition.lcdui.rumand;
import javax.microedition.lcdui.rumandListener;
import javax.microedition.lcdui.DateField;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
public class DateToday extends MIDlet implements CommandListener {
  private Display display;
  private Form form = new Form("Today"s Date");
  private Date today = new Date(System.currentTimeMillis());
  private Command exit = new Command("Exit", Command.EXIT, 1);
  private DateField datefield = new DateField("", DateField.DATE_TIME);
  public DateToday() {
    display = Display.getDisplay(this);
    datefield.setDate(today);
    form.append(datefield);
    form.addCommand(exit);
    form.setCommandListener(this);
  }
  public void startApp() {
    display.setCurrent(form);
  }
  public void pauseApp() {
  }
  public void destroyApp(boolean unconditional) {
  }
  public void commandAction(Command command, Displayable displayable) {
    if (command == exit) {
      destroyApp(false);
      notifyDestroyed();
    }
  }
}





KVM Calendar

import java.util.Calendar;
import java.util.Date;
public class KVMCalendar {
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    Date date = new Date();
    cal.setTime(date);
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);
    System.out.println("Day is " + day + ", month is " + month);
    final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000L;
    long offset = date.getTime();
    offset += 20 * MILLIS_PER_DAY;
    date.setTime(offset);
    cal.setTime(date);
    month = cal.get(Calendar.MONTH);
    day = cal.get(Calendar.DAY_OF_MONTH);
    System.out.println("In 20 days time, day will " + day + ", month will be " + month);
    System.out.println(cal);
  }
}





KVM Time Zones

import java.util.TimeZone;
public class KVMTimeZones {
    
    public static void main(String[] args) {
        TimeZone defaultTZ = TimeZone.getDefault();
        String[] ids = TimeZone.getAvailableIDs();
        
        System.out.println("Available time zone ids: ");
        for (int i = 0; i < ids.length; i++) {
            System.out.print(ids[i] + " ");
        }
        System.out.println("\nDefault timezone is " + defaultTZ.getID() + 
                        ", GMT offset = " + defaultTZ.getRawOffset());
    }
}