Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.20 KB | None | 0 0
  1. package sesion
  2.  
  3. import (
  4.     "encoding/csv"
  5.     "fmt"
  6.     "os"
  7.     "time"
  8. )
  9.  
  10. // NewSesionFactory Nueva factory de sesiones
  11. func NewSesionFactory() ([]Sesion, error) {
  12.     csvFile, err := os.Open("./data/sesiones.txt")
  13.     if err != nil {
  14.         return nil, fmt.Errorf("error al abrir el archivo %v", err)
  15.     }
  16.     defer csvFile.Close()
  17.     reader := csv.NewReader(csvFile)
  18.     reader.Comma = '\t' // Use tab-delimited instead of comma <---- here!
  19.     reader.FieldsPerRecord = -1
  20.     csvData, err := reader.ReadAll()
  21.     if err != nil {
  22.         return nil, fmt.Errorf("error al leer el archivo %v", err)
  23.     }
  24.     set := make(map[time.Time]bool)
  25.     loc, err := time.LoadLocation("America/Argentina/San_Juan")
  26.     if err != nil {
  27.         return nil, fmt.Errorf("no se pudo cargar el location %v", err)
  28.     }
  29.     for idx, item := range csvData {
  30.         if idx == 0 {
  31.             continue
  32.         }
  33.         fecha, err := time.ParseInLocation("2006-01-02", item[1], loc)
  34.         if err != nil {
  35.             return nil, fmt.Errorf("error al decodificar la fecha %v", err)
  36.         }
  37.         set[fecha] = true
  38.     }
  39.     var sesiones []Sesion
  40.     for k := range set {
  41.         sesiones = append(sesiones, Sesion{
  42.             Titulo: fmt.Sprintf("Sesión ordinaria del %s", k.Format("02/01/2006")),
  43.             Fecha:  k,
  44.         })
  45.     }
  46.     return sesiones, nil
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement