// crudwork // Copyright 2004 by Steve T. Pham (http://www.crudwork.com) // // This program 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 3 of the License, or // (at your option) any later version. // // This program 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. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with This program. If not, see <http://www.gnu.org/licenses/>. using System; using System.Collections.Generic; using System.Text; namespace crudwork.Utilities { /// <summary> /// Date Utility /// </summary> public class DateUtil { /// <summary> /// create new instance with default attributes /// </summary> public DateUtil() { } #region HasElapsed method private DateTime? then = null; /// <summary> /// <para>return true if the number of seconds has elapsed since the last check; otherwise return false.</para> /// <para>Use this method to raise a status report event to the GUI (for example, every 1 second) to prevent /// clogging the message pump.</para> /// </summary> /// <param name="seconds">specify number of seconds to check</param> /// <returns></returns> public bool HasElapsed(double seconds) { return HasElapsed(seconds, true); } /// <summary> /// <para>return true if the number of seconds has elapsed since the last check; otherwise return false.</para> /// <para>Use this method to raise a status report event to the GUI (for example, every 1 second) to prevent /// clogging the message pump.</para> /// </summary> /// <param name="seconds">specify number of seconds to check</param> /// <param name="mark">set true to mark the time if time has elapsed; or set false to do a test only</param> /// <returns></returns> public bool HasElapsed(double seconds, bool mark) { var now = DateTime.Now; if (!then.HasValue) { then = now; return false; // return false, because this is the very first check } if (then.Value.AddSeconds(seconds) >= now) return false; // the # of seconds has NOT elapsed... // yes, it has. mark new time for next check if (mark) then = now; return true; } #endregion } }