¿Hay un valor de formato para DateTime.ToString ("") que especificará el día del año en tres dígitos?DateTime Format Día del año
Por ejemplo:
- 1 Ene, 2012 ¿ser 001
- 1 Feb, 2012 ¿será 032
- 31 de Dic, 2012 ¿será 366 (año bisiesto)
- 31-dic 2011 sería 365
¿Hay un valor de formato para DateTime.ToString ("") que especificará el día del año en tres dígitos?DateTime Format Día del año
Por ejemplo:
No, puede usar DateTime.DayOfYear .ToString ("000");
Sus ejemplos:
new DateTime(2012, 1, 1).DayOfYear.ToString("000");
new DateTime(2012, 2, 1).DayOfYear.ToString("000");
new DateTime(2012, 12, 31).DayOfYear.ToString("000");
new DateTime(2011, 12, 31).DayOfYear.ToString("000");
n; eso no es listed.
Lo siento.
Necesitaba una forma de permitir a los usuarios dar un formato que pudiera manejar el día del año y se me ocurrió el siguiente código.
public static string FormatDate(this DateTime date, string format)
{
var builder = new StringBuilder();
int numOfjs = 0;
bool escaped = false;
foreach (char c in format)
{
if (c == 'j' && !escaped)
{
numOfjs++;
}
else
{
if (c == 'j' && escaped)
{
builder.Remove(builder.Length - 1, 1);
}
if (numOfjs > 0)
{
var dayOfYearFormat = new string('0', Math.Min(3, numOfjs));
builder.Append(date.DayOfYear.ToString(dayOfYearFormat));
}
numOfjs = 0;
builder.Append(c);
}
escaped = c == '\\' && !escaped;
}
if (numOfjs > 0)
{
var dayOfYearFormat = new string('0', Math.Min(3, numOfjs));
builder.Append(date.DayOfYear.ToString(dayOfYearFormat));
}
return date.ToString(builder.ToString());
}
Esto le permite tener un formato que reemplazará las letras j consecutivas no delimitadas con el día del año. Va a cero pad hasta 3 dígitos en función del número de j. Más de 3 j's consecutivos actúan como 3.
Básicamente reescribe el formato para reemplazar las j delimitadas con solo j, y j consecutivas con el día del año. A continuación, pasa este nuevo formato al DateTime.ToString()
.
Sé que esto es un poco viejo, pero si absolutamente, positivamente, hay que hacerlo en una sola línea de código que no tienen acceso a la función DateTime.DayOfYear
(como si tuviera que hacer hoy):
int myDay = floor(Now() - Date(parseInt(Now().ToString("yyyy")), 1, 1)) + 1;
Tengo curiosidad por saber cuál es tu caso de uso cuando a) tienes que hacerlo en una sola línea de código yb) sin DayOfYear – Dismissile
Creación de scripts por el lado del usuario, estilo MS Access. Sí, claro, podría haber entrado y haber agregado la función que ni siquiera sabíamos que existía cuando se escribió el controlador de scripts, pero luego tendríamos que recompilar y probar y obtener la nueva versión del cliente y desperdiciar mucho más de nuestro el tiempo y el tiempo del cliente para un caso de uso que nunca ha aparecido en la década o así que el programa ha existido, pero es mucho mejor si podemos hacerlo con las funciones ya provistas. – Trevortni
Bummer , pero esto es casi tan bueno gracias. – Dismissile
Escribiste muy rápido. -) –