Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

444
Vistas
¿Cómo obtengo el día de la semana dado una fecha?

Quiero averiguar lo siguiente: dada una fecha (objeto de fecha y datetime ), ¿cuál es el día de la semana correspondiente?

Por ejemplo, el domingo es el primer día, el lunes: el segundo día... y así sucesivamente.

Y luego, si la entrada es algo así como la fecha de hoy.

Ejemplo

 >>> today = datetime.datetime(2017, 10, 20) >>> today.get_weekday() # what I look for

La salida es tal vez 6 (ya que es viernes)

over 4 years ago · Santiago Trujillo
27 Respuestas
Responde la pregunta

0

Usa date.weekday() cuando el lunes es 0 y el domingo es 6

o

date.isoweekday() cuando el lunes es 1 y el domingo es 7

over 4 years ago · Santiago Trujillo Denunciar

0

Usar el día de la weekday() :

 >>> import datetime >>> datetime.datetime.today() datetime.datetime(2012, 3, 23, 23, 24, 55, 173504) >>> datetime.datetime.today().weekday() 4

De la documentación :

Devuelve el día de la semana como un número entero, donde el lunes es 0 y el domingo es 6.

over 4 years ago · Santiago Trujillo Denunciar

0

Resolví esto por una pregunta de CodeChef.

 import datetime dt = '21/03/2012' day, month, year = (int(x) for x in dt.split('/')) ans = datetime.date(year, month, day) print (ans.strftime("%A"))
over 4 years ago · Santiago Trujillo Denunciar

0

Suponiendo que le den el día, el mes y el año, podría hacer lo siguiente:

 import datetime DayL = ['Mon','Tues','Wednes','Thurs','Fri','Satur','Sun'] date = DayL[datetime.date(year,month,day).weekday()] + 'day' #Set day, month, year to your value #Now, date is set as an actual day, not a number from 0 to 6. print(date)
over 4 years ago · Santiago Trujillo Denunciar

0

Para obtener el domingo como 1 hasta el sábado como 7, esta es la solución más simple a su pregunta:

 datetime.date.today().toordinal()%7 + 1

Todos ellos:

 import datetime today = datetime.date.today() sunday = today - datetime.timedelta(today.weekday()+1) for i in range(7): tmp_date = sunday + datetime.timedelta(i) print tmp_date.toordinal()%7 + 1, '==', tmp_date.strftime('%A')

Producción:

 1 == Sunday 2 == Monday 3 == Tuesday 4 == Wednesday 5 == Thursday 6 == Friday 7 == Saturday
over 4 years ago · Santiago Trujillo Denunciar

0

Una solución sin importaciones para fechas posteriores a 1700/1/1

 def weekDay(year, month, day): offset = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] week = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] afterFeb = 1 if month > 2: afterFeb = 0 aux = year - 1700 - afterFeb # dayOfWeek for 1700/1/1 = 5, Friday dayOfWeek = 5 # partial sum of days betweem current date and 1700/1/1 dayOfWeek += (aux + afterFeb) * 365 # leap year correction dayOfWeek += aux / 4 - aux / 100 + (aux + 100) / 400 # sum monthly and day offsets dayOfWeek += offset[month - 1] + (day - 1) dayOfWeek %= 7 return dayOfWeek, week[dayOfWeek] print weekDay(2013, 6, 15) == (6, 'Saturday') print weekDay(1969, 7, 20) == (0, 'Sunday') print weekDay(1945, 4, 30) == (1, 'Monday') print weekDay(1900, 1, 1) == (1, 'Monday') print weekDay(1789, 7, 14) == (2, 'Tuesday')
over 4 years ago · Santiago Trujillo Denunciar

0

Si desea tener la fecha en inglés:

 from datetime import date import calendar my_date = date.today() calendar.day_name[my_date.weekday()] #'Wednesday'
over 4 years ago · Santiago Trujillo Denunciar

0

Si tiene motivos para evitar el uso del módulo de fecha y hora, entonces esta función funcionará.

Nota: Se supone que el cambio del calendario juliano al gregoriano ocurrió en 1582. Si esto no es cierto para su calendario de interés, cambie la línea si el año es > 1582: en consecuencia.

 def dow(year,month,day): """ day of week, Sunday = 1, Saturday = 7 http://en.wikipedia.org/wiki/Zeller%27s_congruence """ m, q = month, day if m == 1: m = 13 year -= 1 elif m == 2: m = 14 year -= 1 K = year % 100 J = year // 100 f = (q + int(13*(m + 1)/5.0) + K + int(K/4.0)) fg = f + int(J/4.0) - 2 * J fj = f + 5 - J if year > 1582: h = fg % 7 else: h = fj % 7 if h == 0: h = 7 return h
over 4 years ago · Santiago Trujillo Denunciar

0

Esta es una solución si la fecha es un objeto de fecha y hora.

 import datetime def dow(date): days=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"] dayNumber=date.weekday() print days[dayNumber]
over 4 years ago · Santiago Trujillo Denunciar

0

La biblioteca datetime a veces da errores con strptime(), así que cambié a la biblioteca dateutil. Aquí tienes un ejemplo de cómo puedes usarlo:

 from dateutil import parser parser.parse('January 11, 2010').strftime("%a")

El resultado que obtienes de esto es 'Mon' . Si desea que la salida sea 'lunes', use lo siguiente:

 parser.parse('January 11, 2010').strftime("%A")

Esto funcionó para mí bastante rápido. Estaba teniendo problemas al usar la biblioteca de fecha y hora porque quería almacenar el nombre del día de la semana en lugar del número del día de la semana y el formato al usar la biblioteca de fecha y hora estaba causando problemas. Si no tienes problemas con esto, ¡genial! Si es así, definitivamente puede optar por esto, ya que también tiene una sintaxis más simple. Espero que esto ayude.

over 4 years ago · Santiago Trujillo Denunciar

0

A continuación se explica cómo convertir una lista de fechas de cadenas little endian a datetime :

 import datetime, time ls = ['31/1/2007', '14/2/2017'] for d in ls: dt = datetime.datetime.strptime(d, "%d/%m/%Y") print(dt) print(dt.strftime("%A"))
over 4 years ago · Santiago Trujillo Denunciar

0

Si no depende únicamente del módulo de datetime , el calendar podría ser una mejor alternativa. Esto, por ejemplo, te proporcionará los códigos de día:

 calendar.weekday(2017,12,22);

Y esto te dará el día mismo:

 days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"] days[calendar.weekday(2017,12,22)]

O al estilo de python, como una sola línea:

 ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"][calendar.weekday(2017,12,22)]
over 4 years ago · Santiago Trujillo Denunciar

0

Uso del módulo Canlendar

 import calendar a=calendar.weekday(year,month,day) days=["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"] print(days[a])
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí está mi implementación de python3.

 months = {'jan' : 1, 'feb' : 4, 'mar' : 4, 'apr':0, 'may':2, 'jun':5, 'jul':6, 'aug':3, 'sep':6, 'oct':1, 'nov':4, 'dec':6} dates = {'Sunday':1, 'Monday':2, 'Tuesday':3, 'Wednesday':4, 'Thursday':5, 'Friday':6, 'Saterday':0} ranges = {'1800-1899':2, '1900-1999':0, '2000-2099':6, '2100-2199':4, '2200-2299':2} def getValue(val, dic): if(len(val)==4): for k,v in dic.items(): x,y=int(k.split('-')[0]),int(k.split('-')[1]) val = int(val) if(val>=x and val<=y): return v else: return dic[val] def getDate(val): return (list(dates.keys())[list(dates.values()).index(val)]) def main(myDate): dateArray = myDate.split('-') # print(dateArray) date,month,year = dateArray[2],dateArray[1],dateArray[0] # print(date,month,year) date = int(date) month_v = getValue(month, months) year_2 = int(year[2:]) div = year_2//4 year_v = getValue(year, ranges) sumAll = date+month_v+year_2+div+year_v val = (sumAll)%7 str_date = getDate(val) print('{} is a {}.'.format(myDate, str_date)) if __name__ == "__main__": testDate = '2018-mar-4' main(testDate)
over 4 years ago · Santiago Trujillo Denunciar

0

Si desea tener la fecha en inglés:

 >>> from datetime import datetime >>> datetime.today().strftime('%A') 'Wednesday'

Lea más: https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior

over 4 years ago · Santiago Trujillo Denunciar

0

Podemos tomar la ayuda de Pandas:

 import pandas as pd

Como se mencionó anteriormente en el problema Tenemos:

 datetime(2017, 10, 20)

Si ejecutamos esta línea en el cuaderno jupyter tenemos una salida como esta:

 datetime.datetime(2017, 10, 20, 0, 0)

Usando el día de la semana () y el nombre del día de la semana:

Si desea días de la semana en formato de número entero, utilice:

 pd.to_datetime(datetime(2017, 10, 20)).weekday()

La salida será:

 4

Y si lo quieres como nombre del día como domingo, lunes, viernes, etc puedes usar:

 pd.to_datetime(datetime(2017, 10, 20)).weekday_name

La salida será:

'Friday'

Si tiene una columna de fechas en el marco de datos de Pandas, entonces:

Ahora suponga que tiene un marco de datos de pandas con una columna de fecha como esta: pdExampleDataFrame['Dates'].head(5)

 0 2010-04-01 1 2010-04-02 2 2010-04-03 3 2010-04-04 4 2010-04-05 Name: Dates, dtype: datetime64[ns]

Ahora, si queremos saber el nombre del día de la semana como lunes, martes, etc., podemos usar .weekday_name de la siguiente manera:

 pdExampleDataFrame.head(5)['Dates'].dt.weekday_name

la salida será:

 0 Thursday 1 Friday 2 Saturday 3 Sunday 4 Monday Name: Dates, dtype: object

Y si queremos el número entero del día de la semana de esta columna de fechas, podemos usar:

 pdExampleDataFrame.head(5)['Dates'].apply(lambda x: x.weekday())

La salida se verá así:

 0 3 1 4 2 5 3 6 4 0 Name: Dates, dtype: int64
over 4 years ago · Santiago Trujillo Denunciar

0

import datetime import calendar day, month, year = map(int, input().split()) my_date = datetime.date(year, month, day) print(calendar.day_name[my_date.weekday()])

Muestra de salida

 08 05 2015 Friday
over 4 years ago · Santiago Trujillo Denunciar

0

Digamos que tiene timeStamp: variable de cadena, AAAA-MM-DD HH: MM: SS

paso 1 : conviértalo a la función dateTime con código de soplado ...

 df['timeStamp'] = pd.to_datetime(df['timeStamp'])

Paso 2 : ahora puede extraer todas las funciones requeridas como se muestra a continuación, lo que creará una nueva columna para cada uno de los campos: hora, mes, día de la semana, año, fecha

 df['Hour'] = df['timeStamp'].apply(lambda time: time.hour) df['Month'] = df['timeStamp'].apply(lambda time: time.month) df['Day of Week'] = df['timeStamp'].apply(lambda time: time.dayofweek) df['Year'] = df['timeStamp'].apply(lambda t: t.year) df['Date'] = df['timeStamp'].apply(lambda t: t.day)
over 4 years ago · Santiago Trujillo Denunciar

0

Si tiene fechas como una cadena, podría ser más fácil hacerlo usando la marca de tiempo de pandas

 import pandas as pd df = pd.Timestamp("2019-04-12") print(df.dayofweek, df.weekday_name)

Producción:

 4 Friday
over 4 years ago · Santiago Trujillo Denunciar

0

import datetime int(datetime.datetime.today().strftime('%w'))+1

esto debería darte tu número de día real - 1 = domingo, 2 = lunes, etc...

over 4 years ago · Santiago Trujillo Denunciar

0

usa este código:

 import pandas as pd from datetime import datetime print(pd.DatetimeIndex(df['give_date']).day)
over 4 years ago · Santiago Trujillo Denunciar

0

import numpy as np def date(df): df['weekday'] = df['date'].dt.day_name() conditions = [(df['weekday'] == 'Sunday'), (df['weekday'] == 'Monday'), (df['weekday'] == 'Tuesday'), (df['weekday'] == 'Wednesday'), (df['weekday'] == 'Thursday'), (df['weekday'] == 'Friday'), (df['weekday'] == 'Saturday')] choices = [0, 1, 2, 3, 4, 5, 6] df['week'] = np.select(conditions, choices) return df
over 4 years ago · Santiago Trujillo Denunciar

0

A continuación se muestra el código para ingresar la fecha en el formato DD-MM-YYYY. Puede cambiar el formato de entrada cambiando el orden de '%d-%m-%Y' y también cambiando el delimitador.

 import datetime try: date = input() date_time_obj = datetime.datetime.strptime(date, '%d-%m-%Y') print(date_time_obj.strftime('%A')) except ValueError: print("Invalid date.")
over 4 years ago · Santiago Trujillo Denunciar

0

Si desea generar una columna con un rango de fechas ( Date ) y generar una columna que vaya a la primera y asigne el Día de la semana ( Día de la Week Day ), haga lo siguiente (Usaré las fechas que van desde 2008-01-01 al 2020-02-01 ):

 import pandas as pd dr = pd.date_range(start='2008-01-01', end='2020-02-1') df = pd.DataFrame() df['Date'] = dr df['Week Day'] = pd.to_datetime(dr).weekday

La salida es la siguiente:

ingrese la descripción de la imagen aquí

El Week Day varía de 0 a 6, donde 0 corresponde al lunes y 6 al domingo.

over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay un fragmento de código simple para resolver este problema

 import datetime intDay = datetime.date(year=2000, month=12, day=1).weekday() days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] print(days[intDay])

La salida debe ser:

 Friday
over 4 years ago · Santiago Trujillo Denunciar

0

Una opción simple, directa y aún no mencionada:

 import datetime ... givenDateObj = datetime.date(2017, 10, 20) weekday = givenDateObj.isocalendar()[2] # 5 weeknumber = givenDateObj.isocalendar()[1] # 42
over 4 years ago · Santiago Trujillo Denunciar

0

Esto no necesita comentarios sobre el día de la semana.
¡Recomiendo este código~!

 import datetime DAY_OF_WEEK = { "MONDAY": 0, "TUESDAY": 1, "WEDNESDAY": 2, "THURSDAY": 3, "FRIDAY": 4, "SATURDAY": 5, "SUNDAY": 6 } def string_to_date(dt, format='%Y%m%d'): return datetime.datetime.strptime(dt, format) def date_to_string(date, format='%Y%m%d'): return datetime.datetime.strftime(date, format) def day_of_week(dt): return string_to_date(dt).weekday() dt = '20210101' if day_of_week(dt) == DAY_OF_WEEK['SUNDAY']: None
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda