Tips C#: Calcular Edad y saber el Próximo cumpleaños


Hola

En este fragmento de código les mostrare como sacar la edad y calcular el próximo cumpleaños.

public string RetornarMensajeCumpleanio()
{
int diaCumple = 4;//Dia del Cumpleanios
int mesCumple = 4;//Mes de Cumple 4=Abril
int anioCumple = 1984; //Anio de Cumple
DateTime fechaNacimiento = new DateTime(anioCumple, mesCumple, diaCumple);

//Se calcula la Edad Actual A partir de la fecha actual Sustrayendo la fecha de nacimiento
//esto devuelve un TimeSpan por tanto tomaremos los Dias y lo dividimos en 365 dias
int edad = (DateTime.Now.Subtract(fechaNacimiento).Days / 365);

DateTime proximoCumple;
//Define el proximo Cumple, En caso de que el mes sea menor al Mes Actual se busca el Proxima fecha que seria del año que viene
//es por ello el AddYear(1)
//En caso de ser mayor se toma el año actual
if (DateTime.Now.Month <= mesCumple && DateTime.Now.Day <= diaCumple)
proximoCumple = new DateTime(DateTime.Now.AddYears(1).Year, mesCumple, diaCumple);
else
proximoCumple = new DateTime(DateTime.Now.Year, mesCumple, diaCumple);


//Definiremos los dias faltantes para el proximo cumple
TimeSpan faltan = proximoCumple.Subtract(DateTime.Now);

//Ahora Elaboramos el Mensaje
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Usted Tiene {0} Años ", edad);
sb.AppendFormat("y tu Próximo Cumpleaños es: {0} Días", faltan.Days);
sb.AppendFormat(", {0} Horas ", faltan.Hours);
sb.AppendFormat("y {0} Minutos ", faltan.Minutes);

return sb.ToString();
}

Como verán es un ejemplo simple, espero que les sea de utilidad.

Tips JQuery: Mostrar y Ocultar un mensaje automáticamente


Hola a tod@s

 

La idea de este truco es mostrarle lo sencillo que es hacer aparecer un mensaje y que se oculte de manera automática después de cierto tiempo.

Código HTML:

<button id=”btn”>Esperar 1 Segundos</button>
<div id=”message” >Test</div>

 

Código JavaScript:

$( “#btn” ).click(function() {
    setTimeout(showTooltip, 1000)
});

function showTooltip()
  {
       $(“#message”).show(“slow”);
       setTimeout(hideTooltip, 3000)
  }

function hideTooltip()
  {
   $(“#message”).hide(“slow”);
  }

 

Código CSS:

#message
    {
        background-color:blue;
        display: none;
        margin: 3px;
        width: 80px;
        float: left;
        text-align: center;
    }

 

Link del Resultado: http://jsfiddle.net/ajimenezg/Rhnxt/6/embedded/result/

Tips SilverLight: Behavior para colocar en Mayuscula el Texto de un TextBox


Hola a tod@s

A veces deseamos que el texto que escribe el usuario en un TextBox este de una ves en mayúscula, es por ello que les traigo este Behavior muy sencillo para que lo puedan usar.

using System.Windows;
using System.Windows.Controls;
using System.Windows.Interactivity;

namespace MiProyectoSilverLight.Behaviors
{
    public class UpperCaseAction : TriggerAction<TextBox>
    {
        protected override void Invoke(object parameter)
        {
           //Detectamos la posicion del cursor
            var selectionStart = AssociatedObject.SelectionStart;
            var selectionLenght = AssociatedObject.SelectionLength;
            //Colocamos el Texto en Mayuscula
            AssociatedObject.Text = AssociatedObject.Text.ToUpper();
            //Colocamos el Cursor al final
            AssociatedObject.SelectionStart = selectionStart;
            AssociatedObject.SelectionLength = selectionLenght;
        }
    }
}

Espero que le sea de ayuda.

Tips SilverLight: Guardar y Leer Cookies


Existen ocasiones que deseamos acceder a una Cookie o sencillamente guardar algo de información de poco relevancia, en mi caso no lo uso prefiero el Almacenamiento Aislado (Isolated Storage) pero en su momento alguien me pregunto sobre este punto y pues aquí les dejo los métodos de extensión.

  public static class ExtensionCookie
    {
        /// <summary>
        /// Obtener una cookie por su nombre
        /// </summary>
        /// <param name="document">El <c>HtmlDocument</c></param>
        /// <param name="cookieName">Nombre de la Cookie</param>
        /// <returns>El contenido de la cookie</returns>
        public static string GetCookie(this HtmlDocument document, string cookieName)
        {
            // Obtener token de cookie
            string cookies = document.Cookies;
            int idx = cookies.IndexOf(cookieName + "=");
            string val = "";
            if (idx == 0 || (idx > 0 && (cookies[idx - 1] == ';' 
                || cookies[idx - 1] == ' ')))
            {
                int lastIdx = cookies.IndexOf(';', idx);
                if (lastIdx == -1)
                {
                    lastIdx = cookies.Length;
                }

                int start = idx + cookieName.Length + 1;
                val = cookies.Substring(start, lastIdx - start);
                return HttpUtility.UrlDecode(val);
            }
            else
            {
                return string.Empty;
            }
        }

        /// <summary>
        /// Asignar valor a la cookie.
        /// </summary>
        /// <param name="document">El <c>HtmlDocument</c></param>
        /// <param name="cookieName">nombre de la cookie</param>
        /// <param name="value">El valor de la Cookie</param>
        /// <param name="expireDays">Dias de Expiracion</param>
        public static void SetCookie(this HtmlDocument document, string cookieName
            , string value, int? expireDays)
        {
            StringBuilder cookieDefinition = new StringBuilder(cookieName);
            cookieDefinition.Append('=');
            cookieDefinition.Append(HttpUtility.UrlEncode(value));
            if (expireDays.HasValue)
            {
                cookieDefinition.AppendFormat(";expires={0:R}"
                    , DateTime.Now.AddDays(expireDays.Value).ToUniversalTime());
            }

            document.Cookies = cookieDefinition.ToString();
        }

    }

Aquí les dejo un ejemplo  de como usar este código.

        void btnSetCookie_Click(object sender, RoutedEventArgs e)
        {
            TextBox txtCookie = new TextBox();
            txtCookie.Text = "Prueba de Asignar Valor a una Cookie";
            System.Windows.Browser.HtmlDocument doc = new HtmlDocument();
            doc.SetCookie("PruebaCookie", txtCookie.Text, 2);
            //doc.SetCookie("PruebaCookie", txtCookie.Text, null);
        }

        void btnGetCookie_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Browser.HtmlDocument doc = new HtmlDocument();
            TextBox txtCookie = new TextBox();
            txtCookie.Text = doc.GetCookie("PruebaCookie");            
        }

Espero que le sea de mucha utilidad.

Tips SilverLight: Encriptar y Desencriptar (Base64)


Aquí les dejo unos métodos de extensión simples para la encriptación y des encriptación:

 

    public static class ExtensionesSeguridad
    {
        public static string EncrytedString(this string _stringToEncrypt)
        {
            string result = string.Empty;
            byte[] encryted = System.Text.Encoding.Unicode.GetBytes(_stringToEncrypt);
            result = Convert.ToBase64String(encryted);
            return result;
        }

        public static string DecrytedString(this string _stringToDecrypt)
        {
            string result = string.Empty;
            byte[] decryted = Convert.FromBase64String(_stringToDecrypt);
            result = System.Text.Encoding.Unicode.GetString(decryted, 0, decryted.ToArray().Length);
            return result;
        }
    }

Espero que le sea de mucha utilidad.

Nota: aquí les dejo un Enlace de encriptación mas avanzado: http://www.esasp.net/2010/08/encriptar-y-desencriptar-con-c-metodo.html

Tips SilverLight: Validaciones con Expresiones Regulares (IP, E-Mail, URL)


Existen ocasiones que se desea validar si el texto introducido en un TextBox o que viene de la base de datos tienen el formato valido y es por ello que les traigo estos métodos de extensión para facilitar un poco mas la vida, espero que les sea de mucha utilidad.

    public static class ExtensionesValidacion
    {         
        public static bool IsValidUrl(this string text)
        {
            return Regex.IsMatch(text, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
        }
        public static bool IsValidEmailAddress(this string test)
        {
            return Regex.IsMatch(test, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
        }
        public static bool IsValidIPAddress(this string test)
        {
            return Regex.IsMatch(test,
                    @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\
                    .(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\
                    .(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\
                    .(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b");
        }
    }

Ejemplo de como lo pueden usar:

TextBox txt=new TextBox();
string url="http://ajdev.net";

if (url.IsValidUrl())
{
    txt.Text = url;
}
else
{
    txt.Text = string.Empty;
}

 

Tips SilverLight: Saber el Primer y Ultimo día del Mes


Muchas ocasiones nos encontramos que tenemos una fecha y queremos obtener el primer y el ultimo día del Mes, pues aquí les dejo estos simple ejemplos que muy probablemente alguien lo hizo mejor, pero igual se los dejo para facilitarles un poco la búsqueda.

public static class ExtensionesFecha
    {
        public static string PrimerDiaMes(this DateTime date)
        {
            return new DateTime(date.Year, date.Month, 1).ToString("dd");
        }

        public static string UltimoDiaMes(this DateTime date)
        {
            return new DateTime(date.Year, date.Month + 1, 1).AddDays(-1).ToString("dd");
        }
    }
Ejemplo de como Aplicarlo:
            string primerDia = DateTime.Now.PrimerDiaMes();
            string ultimoDia = DateTime.Now.UltimoDiaMes();

Con este simple ejemplo que a su imaginación de como quieren obtener el dato, es decir, si quieren que le diga hasta que día de la semana cae ese primer o ultimo di del mes eso lo pueden complementar con el formateo de la fecha: http://www.csharp-examples.net/string-format-datetime/

Como les dije es un ejemplo simple y espero que les sea de mucha utilidad.

Tips SilverLight: Extraer el Color Hexadecimal a String


En el articulo anterior les mostré como asignar un String a Color pero en esta ocasión queremos extraer el String de ese color para guardarlo en la Base de Datos como haríamos esto? pues simple aquí les dejo el método:

     public static string ToHexStringFromColor(this Color c)
        {
            return string.Format("#{0}{1}{2}{3}",
                    c.A.ToString("X2"),
                    c.R.ToString("X2"),
                    c.G.ToString("X2"),
                    c.B.ToString("X2"));
        }

Ahora le dejo el ejemplo de como usar este método de extensión, además lo usare con el mismo ejemplo que usamos en el articulo anterior.

      TextBlock textBlock = new TextBlock();
      textBlock.Foreground = new SolidColorBrush("#FF7277FE".ToColor());
      Color c = (textBlock.Foreground as SolidColorBrush).Color;
      textBlock.Text = string.Format("Color: {0}", c.ToHexStringFromColor());

 

Tips SilverLight: Obtener Color de un Hexadecimal


Muchas veces estamos creando un control desde código y no tenemos el color de manera directo si no un valor proveniente de la base de datos algo así como el siguiente ejemplo:

      TextBlock textBlock = new TextBlock();
      textBlock.Text="Prueba de Foreground";
      textBlock.Foreground = new SolidColorBrush("#FF7277FE"); //Esto esta Mal

 

Donde el código anterior esta mal por que el SolidColorBrush recibe como parámetro un dato de tipo Color, es por ello que se debe tener el siguiente código que lo declare en una clase estática para así tener mi método de extensión.

public static class ExtensionesColores
    {
        public static Color ToColorFromHex(this string s)
        {
            if (s.StartsWith("#"))
            {
                s = s.Substring(1);
            }
            byte a = System.Convert.ToByte(s.Substring(0, 2), 16);
            byte r = System.Convert.ToByte(s.Substring(2, 2), 16);
            byte g = System.Convert.ToByte(s.Substring(4, 2), 16);
            byte b = System.Convert.ToByte(s.Substring(6, 2), 16);
            return Color.FromArgb(a, r, g, b);

        }
public static Color ToColorFromString(this string colorString)
   {
      Type colorType = (typeof(Colors));
      if (colorType.GetProperty(colorString) != null)
      {
         object color = colorType.InvokeMember(colorString
                    , BindingFlags.GetProperty, null, null, null);
         if (color != null)
          {
            return (Color)color;
          }
      }
      else
      {
        try
          {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<Line xmlns=\http://schemas.microsoft.com/winfx/2006/xaml/presentation\");
          sb.Append("  xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" ");
          sb.AppendFormat(" Fill=\"{0}\" />", colorString);

              Line lne = (Line)XamlReader.Load(sb.ToString());
              return (Color)lne.Fill.GetValue(SolidColorBrush.ColorProperty);
           }
             catch { }
          }
       throw new InvalidCastException("Color no definido");
    }

Lo que en corrección al código que mostramos al inicio de declarar un control quedaría de esta manera:

         TextBlock textBlock = new TextBlock();
         textBlock.Text = "Prueba de Foreground";
         textBlock.Foreground = new SolidColorBrush("#FF7277FE".ToColorFromHex());

 

Espero que le sea de mucha ayuda.

Tips & Trucos: Convertir Segundos a Minutos, Horas y Días – VB y C#


Hola a Todos,

Aquí les dejo unos simples truquillos de convertir Segundos a Minutos, Horas y Días. Utilizando TimeSpan.

Nota: el Response.Write es por que utilice una pagina ASP.net y en el Load cargaba el resultado 🙂

En Visual Basic:

Dim segundos As Double = 7950 'Los Segundos a Probar

'Prueba 1: Total Dias, Total de Horas, Total Minutos, Total Segundos
Dim t As New TimeSpan

Response.Write("Prueba 1: Dias: " + t.FromSeconds(segundos).TotalDays.ToString() +
 " Tiempo: " + t.FromSeconds(segundos).TotalHours.ToString() + ":" +
t.FromSeconds(segundos).TotalMinutes.ToString() + ":" + t.FromSeconds(segundos).TotalSeconds.ToString())

'Prueba 2: Dias, Hora, Minutos y Segundos
Dim t2 As TimeSpan = TimeSpan.FromSeconds(segundos)
Response.Write("<br> Prueba 2: Dias: " + t2.Days.ToString() + " Tiempo: " +
t2.Hours.ToString() + ":" + t2.Minutes.ToString() + ":" +
t2.Seconds.ToString())

En C#:

double segundos=7950 ; //Los Segundos a probar
TimeSpan t =new TimeSpan;
//Prueba 1: Total Dias, Total de Horas, Total Minutos, Total Segundos
Response.Write("Prueba 1: Dias: " + t.FromSeconds
(segundos).TotalDays.ToString() + " Tiempo: " + t.FromSeconds
(segundos).TotalHours.ToString() + ":" + t.FromSeconds
(segundos).TotalMinutes.ToString() + ":" + t.FromSeconds
(segundos).TotalSeconds.ToString());

TimeSpan t2= TimeSpan.FromSeconds(segundos);
//Prueba 2: Dias, Hora, Minutos y Segundos
Response.Write("<br> Prueba 2: Dias: " + t2.Days.ToString() + " Tiempo: " +
t2.Hours.ToString() + ":" + t2.Minutes.ToString() + ":" +
t2.Seconds.ToString());

 

Compartir este Blog :

Post Cruzado con el blog http://geeks.ms/blogs/ajimenez

Tips & Trucos: Como generar palabras claves en ASP.net (Tags) – VB y Csharp


En muchas ocasiones me he preguntado como hacen los sitios Web para separar los Tags (Palabras Claves) e incluirlo en la base de datos y que a la hora de hacer una búsqueda se pueden usar estos Tags como una base, es decir, Este articulo le di los siguientes Tags: VB, Csharp. como puedo yo buscar por un Tags en especifico si al momento de escribir el articulo solo había una caja de texto y un mensaje que decir: si son varios Tags, deben separarse con comas. Sigue leyendo

Truco: Vaciar Contenido de los Textbox (Windows Forms)- VB y CSharp


Siguiendo con la serie de trucos… aqui les dejo la forma de limpiar los Textbox de los Windows Forms, por que en muchas ocaciones hemos cometido el groso error de decirle a cada textbox que su valor es “”… lo bueno de este truquillo es que si tiene texto o numero o lo que sea este lo deja vacio..

Sigue leyendo

Truco: Pasar entre TextBox con la tecla ENTER VB y CSharp – Windows Forms


Algo mas sencillo que los otros trucos que he estado publicando.. este por lo menos podremos simular el TABULADOR en nuestras aplicaciones Windows cosa que muchas veces no encontrabamos la forma de pasar a la siguiente caja de texto o siguiente control con la tecla ENTER.

Sigue leyendo

Truco: Solo Numeros en los Textboxt (Windows Forms) – VB y CSharp


Hay ocaciones que en nuestras aplicaciones debemos controlar lo que el USUARIO deberia escribir en los TextBox… recuerden que esas personitas son experto para hacer que nuestras aplicaciones den un error y mas en los campos que solo debe ir NUMERO en ves de texto muy util en los ID o Codigos utilizados en las tablasde nuestras Base de Datos… por ello aqui les dejo este pequeño truquillo.

Sigue leyendo

Truco: Solo letras en los TexTbox (Windows Forms) – VB y CSharp


Hay ocaciones que en nuestras aplicaciones debemos controlar lo que el USUARIO deberia escribir en los TextBox… recuerden que esas personitas son experto para hacer que nuestras aplicaciones den un error y mas en los campos que solo debe ir TEXTO en ves de numero… por ello aqui les dejo este pequeño truquillo.

Sigue leyendo