Mijn vraag
Waarom wordt Datum wel geconverteerd en Datumdier niet ?
Relevante software en hardware die ik gebruik
VisualStudio
Wat ik al gevonden of geprobeerd heb
Bij het uitlezen van een reader zet ik met C# de gegevens om in een json string.
De taak Aanvoer in de reader kent twee datumvelden. Als ik deze in een string weergeef binnen mijn json zie ie er als volgt uit.
Zie veld Datum en veld Datumdier
Als ik deze velden omzet naar een DateTime? wordt het veld Datum wel geconverteerd maar op het veld Datumdier krijg ik de foutmelding : System.FormatException: 'De tekenreeks is niet als geldige DateTime herkend.'
Class AanvoerReader ziet er zo uit
De functie ParseDatum1() ziet er zo uit;
Waarom wordt Datum wel geconverteerd en Datumdier niet ?
Waarom wordt Datum wel geconverteerd en Datumdier niet ?
Relevante software en hardware die ik gebruik
VisualStudio
Wat ik al gevonden of geprobeerd heb
Bij het uitlezen van een reader zet ik met C# de gegevens om in een json string.
De taak Aanvoer in de reader kent twee datumvelden. Als ik deze in een string weergeef binnen mijn json zie ie er als volgt uit.
Zie veld Datum en veld Datumdier
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| [ { "Worpregistratie": [], "Doodgeboren": [], "Groepsgeboorte": [], "Verplaatsing": [], "Spenen": [], "Afvoer": [], "Aanvoer": [ { "Datum": "09012021", "Ubn": "6250036", "RasId": "77", "HokId": "", "Lammeren": [ { "Levensnummer": "100211628284", "Datumdier": "10102020", "Geslacht": "0", "ActId": "3", "Gewicht": 0.0 } ] } ], "Omnummeren": [], "Medicaties": [], "Halsnummers": [] } |
Als ik deze velden omzet naar een DateTime? wordt het veld Datum wel geconverteerd maar op het veld Datumdier krijg ik de foutmelding : System.FormatException: 'De tekenreeks is niet als geldige DateTime herkend.'
Class AanvoerReader ziet er zo uit
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| class AanvoerReader : BaseParser { public List<Aanvoer> ParseArray(string raw) { List<Aanvoer> aanvoer = new List<Aanvoer>(); string[] regels = raw.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); foreach (string regel in regels) { if (string.IsNullOrEmpty(regel.Replace("\r", ""))) { continue; } aanvoer.Add(ParseArr(regel)); } return aanvoer; } private Aanvoer ParseArr(string raw) { string[] velden = raw.Split('|'); Aanvoer aanvoer = new Aanvoer { Datum = ParseDatum1(velden[1]), Ubn = velden[2], RasId = velden[3], HokId = velden[4], Lammeren = ParseLammeren(velden) }; return aanvoer; } private List<AanvoerLam> ParseLammeren(string[] velden) { List<AanvoerLam> lammeren = new List<AanvoerLam>(); int numberOfLamFields = 6; for (int l = 0; l < 7; l++) { int fieldIndex = 6 + l * numberOfLamFields; AanvoerLam lam = new AanvoerLam() { Levensnummer = ParseLevensnummer(velden[fieldIndex], velden[fieldIndex + 1]), Datumdier = ParseDatum1(velden[fieldIndex + 2]), Geslacht = velden[fieldIndex + 3], ActId = velden[fieldIndex + 4], Gewicht = ParseGram(velden[fieldIndex + 5]) }; if (!lam.IsEmpty()) { lammeren.Add(lam); } } return lammeren; } } |
De functie ParseDatum1() ziet er zo uit;
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
| protected DateTime? ParseDatum1(string veld) { DateTime? datum = null; if (veld != null) { return DateTime.ParseExact(veld, "ddMMyyyy", CultureInfo.InvariantCulture); } else { return datum.GetValueOrDefault(); } } |
Waarom wordt Datum wel geconverteerd en Datumdier niet ?
[ Voor 0% gewijzigd door RobIII op 09-01-2021 16:27 . Reden: Syntax highlighting toegepast ]