# Cast/parse multiple variables at once

**URL:** <https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345>\
**Category:** General Usage\
**Tags:** parsing, datetime\
**Created:** [May 16, 2024, 8:01am UTC](https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345 "2024-05-16T08:01:36Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ju\_ska](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Ju\_ska](https://discourse.julialang.org/u/Ju_ska)\
**Post date:** [May 16, 2024, 8:01am UTC](https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345/1 "2024-05-16T08:01:37Z")

</div>

Hi,

Having to process dates read from files, I’m currently doing e.g.:

```julia
date="20240516235400"
yyyy, mm, dd, h, m, s = parse(Int32, date[1:4]), parse(Int32, date[5:6]), parse(Int32, date[7:8]), parse(Int32, date[9:10]), parse(Int32, date[11:12]), parse(Int32, date[13:14])
date_julia=DateTime(yyyy, mm, dd, h, m, s)

```

I would like to know if there’s a way to do a grouped cast like:

```julia
parse(Int32; yyyy, mm, dd, h, m, s)

```

Or maybe there’s a way to extract the date directly from the string (or int), but I’ve seen none in the documentation.

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [May 16, 2024, 8:37am UTC](https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345/2 "2024-05-16T08:37:17Z")

</div>

If you use [CSV.jl](https://csv.juliadata.org/stable/index.html) to read the data from file there is parameter `dateformat`

> **[Examples · CSV.jl](https://csv.juliadata.org/stable/examples.html#dateformat_example)**
>
> Documentation for CSV.jl.

---

<div class="post-metadata">

**Author:** ![Zentrik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zentrik/32/35409_2.png) [@Zentrik](https://discourse.julialang.org/u/Zentrik)\
**Post date:** [May 16, 2024, 8:45am UTC](https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345/3 "2024-05-16T08:45:57Z")

</div>

Does `parse.(Int32, (yyyy, mm, dd, h, m, s))` or `parse.(Ref(Int32), (yyyy, mm, dd, h, m, s))` work?

Also pretty sure you can give DateTime the string format and it will parse the string for you, but don’t remember the API for that.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [May 16, 2024, 8:56am UTC](https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345/4 "2024-05-16T08:56:25Z")

</div>

You can directly create a `DateTime` from a string specifying the format:

```julia
julia> using Dates

julia> format = dateformat"yyyymmddHHMMSS"
dateformat"yyyymmddHHMMSS"

julia> DateTime("20240516235400", format)
2024-05-16T23:54:00

```

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [May 16, 2024, 8:56pm UTC](https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345/5 "2024-05-16T20:56:34Z")

</div>

Nils provided the solution, but note that you could broadcast the parsing command across an array of index ranges:

```julia
using Dates
date = "20240516235400"
ix = [1:4, 5:6, 7:8, 9:10, 11:12, 13:14]
yyyy,mm,dd,h,m,s = parse.(Int32, getindex.(date, ix))
date_julia = DateTime(yyyy,mm,dd,h,m,s)

```

---

<div class="post-metadata">

**Author:** ![Ju\_ska](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Ju\_ska](https://discourse.julialang.org/u/Ju_ska)\
**Post date:** [May 17, 2024, 8:42am UTC](https://discourse.julialang.org/t/cast-parse-multiple-variables-at-once/114345/6 "2024-05-17T08:42:27Z")

</div>

Thanks everyone, there’s many ways to proceed.
