1: using System;
2:
3: namespace JnSoftware.Helpers
4: {
5:
6: /// <summary>
7: /// Utilidades de fechas
8: /// </summary>
9: class DateUtils
10: {
11: Random seed = new Random(DateTime.Now.Millisecond);
12:
13: // Evita la instancia de la clase.
14: private DateUtils() { }
15:
16:
17: private DateTime[] getDates(int numDates, DateTime dateInit, DateTime dateEnd)
18: {
19: DateTime[] lst = new DateTime[numDates];
20: for (int i = 0; i < numDates; i++)
21: {
22: // Obtenemos el intervalo de tiempo
23: TimeSpan interval = dateEnd.Subtract(dateInit);
24: // Se calcula el número de días
25: int randomMax = (int)interval.TotalDays;
26: // Se obtiene un número aleatorio
27: long randomValue = seed.Next(0, randomMax);
28: // Se le añade a la fecha inicial
29: lst[i] = dateInit.AddDays(randomValue);
30: }
31: return lst;
32: }
33:
34:
35:
36:
37: #region Métodos públicos estáticos
38: /// <summary>
39: /// Obtiene una matriz de Fechas obtenidas de forma pseudo-aleatoria.
40: /// </summary>
41: /// <param name="numDates">Nº de Fechas deseadas</param>
42: /// <returns></returns>
43: public static DateTime[] GetRandomDate(int numDates)
44: {
45: return GetRandomDate(numDates, DateTime.MinValue, DateTime.MaxValue);
46: }
47:
48:
49: /// <summary>
50: /// Obtiene una matriz de Fechas obtenidas de forma pseudo-aleatoria.
51: /// </summary>
52: /// <param name="numDates">Nº de Fechas deseadas</param>
53: /// <param name="yearInit">Año de inicio del intervalo</param>
54: /// <param name="yearEnd">Año de fin del intervalo</param>
55: /// <returns></returns>
56: public static DateTime[] GetRandomDate(int numDates, int yearInit, int yearEnd)
57: {
58: return GetRandomDate(numDates, new DateTime(yearInit, 1, 1), new DateTime(yearEnd, 12, 31));
59: }
60:
61:
62: /// <summary>
63: /// Obtiene una matriz de Fechas obtenidas de forma pseudo-aleatoria.
64: /// </summary>
65: /// <param name="numDates">Nº de Fechas deseadas</param>
66: /// <param name="dateInit">Fecha de inicio del intervalo</param>
67: /// <param name="dateEnd">Fecha de fin del intervalo</param>
68: /// <returns></returns>
69: public static DateTime[] GetRandomDate(int numDates, DateTime dateInit, DateTime dateEnd)
70: {
71: DateUtils du = new DateUtils();
72: return du.getDates(numDates, dateInit, dateEnd);
73: }
74:
75: #endregion
76: }
77: }