Tips SilverLight: Saber el Primer y Ultimo dia 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.

Off-Topic: Volviendo al mundo..!!

Hola a tod@s

 

Después de 2 años de ausencia en el mundo bloguero he vuelto y con ganas de seguir posteando buenos artículos basándome en la experiencia para ayudar a quienes estén comenzando o que ya tengan tiempo en el mundo de la programación.

Han pasado muchas cosas desde la ultima ves que publique algo, lanzamiento de productos nuevos y muy novedosos, Grandes anuncios en las diferentes áreas tecnológicas y hasta una hermosa bebita tengo Sonrisa

Espero seguir siendo de apoyo y que mis futuros artículos le sean de muchísima ayuda. Quiero agradecer a las personas que han visitado mi blog en los últimos 3 años, no quiero ponerme sentimental ni mucho menos extenderme con tanto bla bla bla así que hasta prontoSonrisa.