¿Cómo darle formato de fecha y tiempo a un DateTimePicker en C# Windows form .Net?

Para que nuestro componente nos ofrezca la funcionalidad de poder capturar tanto la fecha como la hora en nuestro control DateTimePicker, debemos aplicar en las siguientes dos propiedades los valores que te muestro a continuación (suponiendo que nuestro control se llama MiDateTimePicker):


 MiDateTimePicker.Format = DateTimePickerFormat.Custom;
 MiDateTimePicker.CustomFormat = "dd/MM/yyyy hh:mm:ss";

El código anterior es suficiente para que podamos capturar tanto la fecha como el tiempo.

¿Cómo hacer un between entre dos fechas con Eloquent en Laravel 5.x?

Para hacer un between en Laravel utilizando Eloquent entre un rango de fechas, lo podemos hacer de la siguiente manera:


//creams 2 objetos tipo carbon con las fechas
$f1 = new \Carbon\Carbon("01-01-2018");
$f2 = new \Carbon\Carbon("31-01-2018");

//aplicamos Eloquent
$lst=MiModelo::where("date_start",">=",$f1)
             ->where("date_end","<=",$f2)
             ->get(); 

¿Cómo obtener la diferencia en minutos de dos fechas en Laravel 5.x?

Para obtener la diferencia en minutos de dos fechas haremos uso de Carbon una extensión de DateTime que viene incluida en Laravel la cual tiene muchísimas funcionalidades interesantes.

A continuación un ejemplo:


//convertimos la fecha 1 a objeto Carbon
$carbon1 = new \Carbon\Carbon("2018-01-01 00:00:00");
//convertimos la fecha 2 a objeto Carbon
$carbon2 = new \Carbon\Carbon("2018-02-02 00:00:00");
//de esta manera sacamos la diferencia en minutos
$minutesDiff=$carbon1->diffInMinutes($carbon2);

¿Cómo obtener la diferencia en minutos de dos fechas en mysql? TIMESTAMPDIFF

Para obtener la diferencia en minutos de dos fechas en mysql existe la función TIMESTAMPDIFF la cual nos ayuda a realizar la resta.

Esta función también nos permite obtener otros valores como hora, días, segundos etc.

Se utiliza de la siguiente forma:


select TIMESTAMPDIFF(MINUTE,fechaInicial,fechaFinal) as minutos from MiTabla

¿Cómo sellar el XML para cfdi 3.3 facturación electrónica C# .Net? – Sellar con key – SAT #5

En este video te mostrare como contrarrestar los campos FieldSpecified creados en el primer video, poner el formato correcto de fecha, obtener la cadena original, obtener el campo certificado, poner los namespaces al xml, y por ultimo como sellar el xml con tu key.

Descargar proyecto hecho en el video: clic aquí.

Video 1: https://www.youtube.com/watch?v=XlTz0NRQLm4

Video 2: https://www.youtube.com/watch?v=HjfqdTspnio

Video 3: https://www.youtube.com/watch?v=qIr-LdCzfF0

Video 4: https://www.youtube.com/watch?v=suRypKtb7VU

Catálogos sat mysql: https://hdeleon.net/catalogos-para-facturar-3-3-sat-en-mysql/

Puedes preguntarme sobre programación aquí: https://www.youtube.com/watch?v=M84D75OcuUU


//CÓDIGO UTILIZADO EN EL VIDEO
 class Program
    {
        //modifiquen por su path
        static private string path = @"C:\Users\Bioxor\source\repos\Facturacion3.3-tutorial-hdeleon\";
        static string pathXML = path + @"miPrimerXML.xml";

        static void Main(string[] args)
        {
            //Obtener numero certificado------------------------------------------------------------

            string pathCer = path+@"XSDToXML\CSD01_AAA010101AAA.cer";
            string pathKey = path+@"XSDToXML\CSD01_AAA010101AAA.key";
            string clavePrivada = "12345678a";

            //Obtenemos el numero
            string numeroCertificado, aa, b, c;
            SelloDigital.leerCER(pathCer, out aa, out b, out c, out numeroCertificado);

            //Llenamos la clase COMPROBANTE--------------------------------------------------------
            Comprobante oComprobante = new Comprobante();
            oComprobante.Version = "3.3";
            oComprobante.Serie = "H";
            oComprobante.Folio = "1";
            oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
           // oComprobante.Sello = "faltante"; //sig video
            oComprobante.FormaPago = "99";
            oComprobante.NoCertificado = numeroCertificado;
           // oComprobante.Certificado = ""; //sig video
            oComprobante.SubTotal = 10m;
            oComprobante.Descuento = 1;
            oComprobante.Moneda = "MXN";
            oComprobante.Total = 9;
            oComprobante.TipoDeComprobante = "I";
            oComprobante.MetodoPago = "PUE";
            oComprobante.LugarExpedicion = "20131";

            ComprobanteEmisor oEmisor = new ComprobanteEmisor();

            oEmisor.Rfc = "POWE870601DM7";
            oEmisor.Nombre = "Una razón rh de cv";
            oEmisor.RegimenFiscal = "605";

            ComprobanteReceptor oReceptor = new ComprobanteReceptor();
            oReceptor.Nombre = "Pepe SA DE CV";
            oReceptor.Rfc = "PEPE080801JH1";
            oReceptor.UsoCFDI = "P01";

            //asigno emisor y receptor
            oComprobante.Emisor = oEmisor;
            oComprobante.Receptor = oReceptor;

            List<ComprobanteConcepto> lstConceptos = new List<ComprobanteConcepto>();
            ComprobanteConcepto oConcepto = new ComprobanteConcepto();
            oConcepto.Importe = 10m;
            oConcepto.ClaveProdServ = "92111704";
            oConcepto.Cantidad = 1;
            oConcepto.ClaveUnidad = "C81";
            oConcepto.Descripcion = "Un misil para la guerra";
            oConcepto.ValorUnitario = 10m;
            oConcepto.Descuento = 1;

            lstConceptos.Add(oConcepto);

            oComprobante.Conceptos = lstConceptos.ToArray();

            //Creamos el xml
            CreateXML(oComprobante);

            string cadenaOriginal = "";
            string pathxsl = path+ @"XSDToXML\cadenaoriginal_3_3.xslt";
            System.Xml.Xsl.XslCompiledTransform transformador = new System.Xml.Xsl.XslCompiledTransform(true);
            transformador.Load(pathxsl);

            using (StringWriter sw= new StringWriter())
            using (XmlWriter xwo= XmlWriter.Create(sw,transformador.OutputSettings)) {

                transformador.Transform(pathXML, xwo);
                cadenaOriginal = sw.ToString();
            }

            SelloDigital oSelloDigital = new SelloDigital();
            oComprobante.Certificado = oSelloDigital.Certificado(pathCer);
            oComprobante.Sello = oSelloDigital.Sellar(cadenaOriginal, pathKey, clavePrivada);

            CreateXML(oComprobante);

        }

        private static void CreateXML(Comprobante oComprobante)
        {
            //SERIALIZAMOS.-------------------------------------------------

            XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces();
            xmlNameSpace.Add("cfdi", "http://www.sat.gob.mx/cfd/3");
            xmlNameSpace.Add("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital");
            xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");

            XmlSerializer oXmlSerializar = new XmlSerializer(typeof(Comprobante));

            string sXml = "";

            using (var sww = new Utils.StringWriterWithEncoding(Encoding.UTF8))
            {

                using (XmlWriter writter = XmlWriter.Create(sww))
                {

                    oXmlSerializar.Serialize(writter, oComprobante,xmlNameSpace);
                    sXml = sww.ToString();
                }

            }

            //guardamos el string en un archivo
            System.IO.File.WriteAllText(pathXML, sXml);
        }
    }

¿Cómo poner el formato correcto de fecha para facturación electrónica 3.3 en C# .Net? cfdi SAT

Para ponerle el formato correcto para un xml que será timbrado con las reglas de cfdi 3.3, vamos a aplicar el formato a un DateTime de la siguiente forma:


//teniendo el dato en un DateTime en una variable llamada Fecha

string sFechaSAT= Fecha.ToString("yyyy-MM-ddTHH:mm:ss");

Así tu fecha tendrá el formato correcto para el timbrado.

¿Cómo sumar 1 día, 1 mes o 1 año a una fecha en mysql?

Cuando manejamos fechas con mysql tenemos a la disposición muchas funciones ya establecidas en el motor las cuales son útiles al realizar consultas.

Te muestro como puedes agregar 1 día, 1 mes o un año a una fecha en específico.

Utilizando la función Now() de mysql aplicare la suma como muestro a continuación:


-- 1 día
select  DATE(DATE_ADD(now(), INTERVAL 1 DAY))

-- 1 mes
select  DATE(DATE_ADD(now(), INTERVAL 1 MONTH))

-- 1 año
select  DATE(DATE_ADD(now(), INTERVAL 1 YEAR))

¿Cómo obtener el primer día y el último día del mes actual con C#?

Para obtener el primer día y ultima día del mes actual con C#, utilizaremos la funcionalidad de la clase DateTime.

Es muy útil conocer funcionalidad de este tipo, sobre todo cuando se hacen reportes y queremos que al entrar el usuario al módulo por defecto muestre solo lo del mes actual.

A continuación te muestro como hacerlo fácilmente:


//Primero obtenemos el día actual
 DateTime date = DateTime.Now;

//Asi obtenemos el primer dia del mes actual
DateTime oPrimerDiaDelMes = new DateTime(date.Year, date.Month, 1);

//Y de la siguiente forma obtenemos el ultimo dia del mes
//agregamos 1 mes al objeto anterior y restamos 1 día.
DateTime oUltimoDiaDelMes = oPrimerDiaDelMes.Value.AddMonths(1).AddDays(-1);

Ya teniendo el primer dia del mes y el ultimo dia del mes actual en los dos objetos DateTime, ahora puedes hacer uso de ellos en algun componente, por ejemplo un DateTimePicker.

¿Cómo parsear el formato dd-mm-yy en un DateTime en C# .Net?

Para poder parsear el formato dd-mm-yy en c# .Net, el problema radica que en el año solo tenemos 2 dígitos, pero esto no impide que se pueda realizar de manera fácil, para hacerlo basta con utilizar el método ParseExact de DateTime de la siguiente forma:


DateTime fecha = DateTime.ParseExact("30-01-16", "dd-MM-yy", CultureInfo.InvariantCulture);

¿Cómo concatenar un TimeSpan a un DateTime en c# .Net?

Por alguna circunstancia tenemos un TimeSpan y un DateTime y requerimos concatenarlos, es decir tenemos un TimeStam con la hora “13:30:00” y tenemos un DateTime con “2016-01-01 00:00:00”. Para ello tenemos que hacerlo de la siguiente forma:


DateTime fecha = DateTime.Parse("2016-01-01");
TimeSpan tiempo = TimeSpan.Parse("13:30:00");
DateTime fechaConcatenada = fecha.Value.Add(tiempo);

//fechaConcatenada = 2016-01-01 13:30:00