sistema obtener net getlastwritetime fecha creacion como año archivo actual c# windows filenames

c# - obtener - Convierta DateTime.Now a un nombre de archivo de Windows válido



obtener año actual c# (5)

Úselo para remover el patrón:

DateTime.Now.ToString("yyyy-MM-dd-HH-mm") // will produce 2011-10-24-13-10

He tenido este problema varias veces y acabo de utilizar una solución alternativa, pero pensé que podría preguntar aquí en caso de que haya una opción más fácil. Cuando tengo una cadena de DateTime.Now y luego quiero usar esto en un nombre de archivo, no puedo porque Windows no permite los caracteres / y: en nombres de archivos, tengo que ir y reemplazarlos así:

string filename = DateTime.Now.ToString().Replace(''/'', ''_'').Replace('':'', ''_'');

Lo cual parece una molestia, ¿hay alguna manera más fácil de hacer esto? Cualquier sugerencia muy apreciada.


Puede usar el formato largo de la marca de tiempo:

DateTime.Now.ToBinary()


Según lo escrito por Samich, pero

// The following will produce 2011-10-24-13-10 DateTime.Now.ToString("yyyy-MM-dd-HH-mm", CultureInfo.InvariantCulture);

Si no confía en mí, intente establecer la cultura en el new CultureInfo("ar-sa"); :-)

Añadiré que, si odias al mundo, esto es lo más preciso:

DateTime.Now.Ticks.ToString("D19");

Hay 19 dígitos en DateTime.MaxValue.Ticks

Si odias al mundo aún más:

DateTime.Now.Ticks.ToString("X16");

Hay 16 dígitos hexadecimales en DateTime.MaxValue.Ticks .


Si necesita que el horario sea más preciso, puede usar:

DateTime.Now.ToString("O").Replace(":", "_") //2016-09-21T13_14_01.3624587+02_00

o (si necesita un poco menos)

DateTime.Now.ToString("s").Replace(":", "_") //2016-09-21T13_16_11

Ambos son nombres de archivo válidos y son ordenables.

Puedes crear un método de extensiones:

public static string ToFileName(this DateTime @this) { return @this.ToString("O").Replace(":", "_"); }

Y luego úsalo así:

var saveZipToFile = "output_" + DateTime.Now.ToFileName() + ".zip";

El formato "s" no tiene en cuenta las zonas horarias y, por lo tanto, las fechas:

  • 2014-11-15T18: 32: 17 + 00: 00
  • 2014-11-15T18: 32: 17 + 08: 00

formateado con "s" son idénticos.

Entonces, si su fecha y hora representan las zonas horarias dirrerent, le recomendaría usar "O" o usar DateTime.UtcNow .


DateTime.Now.ToString("dd_MM_yyyy")