Package com.caucho.quercus.lib.date

Source Code of com.caucho.quercus.lib.date.DateTime

/*
* Copyright (c) 1998-2011 Caucho Technology -- all rights reserved
*
* This file is part of Resin(R) Open Source
*
* Each copy or derived work must preserve the copyright notice and this
* notice unmodified.
*
* Resin Open Source is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Resin Open Source is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
* of NON-INFRINGEMENT.  See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with Resin Open Source; if not, write to the
*
*   Free Software Foundation, Inc.
*   59 Temple Place, Suite 330
*   Boston, MA 02111-1307  USA
*
* @author Nam Nguyen
*/

package com.caucho.quercus.lib.date;

import com.caucho.quercus.UnimplementedException;
import com.caucho.quercus.annotation.Optional;
import com.caucho.quercus.env.Env;
import com.caucho.quercus.lib.date.DateModule.DateParser;
import com.caucho.util.QDate;

/**
* Date functions.
*/
public class DateTime
{
  public static final String ATOM = "Y-m-d\\TH:i:sP";
  public static final String COOKIE = "l, d-M-y H:i:s T";
  public static final String ISO8601 = "Y-m-d\\TH:i:sO";
  public static final String RFC822 = "D, d M y H:i:s O";
  public static final String RFC850 = "l, d-M-y H:i:s T";
  public static final String RFC1036 = "D, d M y H:i:s O";
  public static final String RFC1123 = "D, d M Y H:i:s O";
  public static final String RFC2822 = "D, d M Y H:i:s O";
  public static final String RFC3339 = "Y-m-d\\TH:i:sP";
  public static final String RSS = "D, d M Y H:i:s O";
  public static final String W3C = "Y-m-d\\TH:i:sP";
 
  private QDate _qDate;
  private DateTimeZone _dateTimeZone;
 
  protected DateTime(Env env, String timeString)
  {
    this(env, timeString, null);
  }
 
  protected DateTime(Env env, String timeString, DateTimeZone dateTimeZone)
  {
    if (dateTimeZone == null)
      dateTimeZone = new DateTimeZone(env);
   
    _qDate = new QDate(dateTimeZone.getTimeZone(), env.getCurrentTime());
    _dateTimeZone = dateTimeZone;
   
    init(env, timeString);
  }
 
  private void init(Env env, String timeString)
  {
    long now = env.getCurrentTime();
    _qDate.setGMTTime(now);

    if (timeString.equals("")) {
      _qDate.setHour(0);
      _qDate.setMinute(0);
      _qDate.setSecond(0);
    }

    DateParser parser = new DateParser(timeString, _qDate);
       
    long time = parser.parse();
   
    _qDate.setGMTTime(time);
  }
 
  public static DateTime __construct(Env env,
                                     @Optional("now") String time,
                                     @Optional DateTimeZone timeZone)
  {
    if (time == null)
      time = "now";
    if (timeZone == null)
      return new DateTime(env, time);
    else
      return new DateTime(env, time, timeZone);
  }
 
  public String format(String format)
  {
    long time = _qDate.getGMTTime() / 1000;
   
    QDate calendar = new QDate(_qDate.getLocalTimeZone());

    return DateModule.dateImpl(format, time, calendar);
  }
 
  public void modify(String modify)
  {
    DateParser parser = new DateParser(modify, _qDate);
   
    long time = parser.parse();
   
    setTime(time);
  }
 
  public DateTimeZone getTimeZone()
  {
    return _dateTimeZone;
  }
 
  public void setTimeZone(Env env, DateTimeZone dateTimeZone)
  {
    _dateTimeZone = dateTimeZone;
   
    long time = _qDate.getGMTTime();
   
    _qDate = new QDate(dateTimeZone.getTimeZone(), env.getCurrentTime());
    _qDate.setGMTTime(time);
  }
 
  public long getOffset()
  {
    return _qDate.getZoneOffset() / 1000;
  }
 
  public void setTime(int hour,
                      int minute,
                      @Optional int second)
  {
    _qDate.setTime(hour, minute, second, 0);
  }
 
  public void setDate(int year,
                      int month,
                      int day)
  {
    _qDate.setDate(year, month - 1, day);
  }
 
  public void setISODate(int year,
                         int week, //yes, week, not month
                         @Optional int day)
  {
    throw new UnimplementedException("DateTime::setISODate()");
  }
 
  protected QDate getQDate()
  {
    return _qDate;
  }
 
  protected long getTime()
  {
    return _qDate.getLocalTime();
  }
 
  protected void setTime(long time)
  {
    _qDate.setLocalTime(time);
  }
 
  public String toString()
  {
    return format("now");
  }
}
TOP

Related Classes of com.caucho.quercus.lib.date.DateTime

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.