Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Python strftime - data senza 0 iniziale                                      17 risposte                          
  •     
    

C'è un modo agile per sbarazzarsi di zeri iniziali per stringhe di data in Python?

Nell'esempio che segue mi piacerebbe ottenere 12/1/2009 in cambio anziché 12/01/2009. Credo che avrei potuto usare le espressioni regolari. Ma a me che sembra eccessivo. C'è una soluzione migliore?

>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'

Vedere anche

  

Python strftime - data senza 0 iniziale

È stato utile?

Soluzione

@OP, non ci vuole molto a che fare un po 'di manipolazione delle stringhe.

>>> t=time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
>>> '/'.join( map( str, map(int,t.split("/")) ) )
'12/1/2009'

Altri suggerimenti

Una soluzione più semplice e leggibile è formattare da soli:

>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012

Io suggerirei una semplice espressione regolare. Non è che questo è performace-critical, è vero?

Cerca \b0 e sostituirlo con nulla.

I. e:.

import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))
>>> time.strftime('%-m/%-d/%Y',time.strptime('8/1/2009', '%m/%d/%Y'))
'8/1/2009'

Tuttavia, ho il sospetto che questo dipende implementazione strftime() del sistema e potrebbe non essere completamente portatile per tutte le piattaforme, se la cosa vi interessa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top