---
title: "Date, year, week conversion"
author: "Chi Zhang"
date: "2022-05-04"
output:
  rmarkdown::html_vignette:
    fig_width: 6
    fig_height: 6
vignette: >
  %\VignetteIndexEntry{Date, year, week conversion}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  chunk_output_type: console
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

We create the following functions to make it easier to work with date and times in different formats. 

For the input, we allow either a numeric (3) or string ("03", "2020-03"). 

For the output, the user need to specify whether numeric or string is required. Functions end with `c` returns a character output and `n` returns a double. 

```{r}
library(cstime)
library(magrittr)
```

## Which year/week is this date?

By default the functions returns the isoyear or isoweek of **today**. 

```{r}
date_to_isoyear_c()
date_to_isoyear_n()
date_to_isoweek_c()
date_to_isoweek_n()
# provide a date
date_to_isoyear_c('2021-01-01')
date_to_isoyear_n('2021-01-01')
date_to_isoweek_c('2021-01-01')
date_to_isoweek_n('2021-01-01')
date_to_isoyearweek_c('2021-08-11')
```

## Get isoyear/isoweek from a `isoyearweek` string

```{r}
isoyearweek_to_isoyear_c("2021-02")
isoyearweek_to_isoyear_n("2021-02")
isoyearweek_to_isoweek_c("2021-02")
isoyearweek_to_isoweek_n("2021-02")
```

A list of `isoyearweek` can be accessed in the following way. 

```{r}
yrwk_19_20 <- dates_by_isoyearweek[isoyear %in% c(2019, 2020)]
head(yrwk_19_20)
```
