Description
Note: The concept was already created, only the exercise is missing now.
Getting Started
If you have not yet contributed to concept exercises before, this task requires some upfront reading to acquire the necessary background knowledge.
Here you can read about what Concept Exercises are and how they are structured:
If you have not done so yet, it is probably also helpful to do a couple of "Learning Exercises" (this is how they are called on the site) yourself. You can also look at the code of an existing concept exercise like bird-watcher
(concept for-loops
) for reference.
See the documentation above (general documentation), as well as How to implement a Concept Exercise in JavaScript.
Also be aware of these general guidelines.
Goal
The goal here is to create a new concept exercise that teaches working with dates via Date
.
The concept needs to be written from scratch, the exercise can be ported from another track (see details below).
Concepts
The following concept needs to be created. You can use the introduction.md
file of the concept also as introduction.md
file of the exercise. No need to create different content at this point. Additionally, if you want to save some time it is ok to not have an extensive about.md
for now. It can also be mainly the introduction.md
content, maybe with some additions you would like to make.
dates
(maybe use "Date and Time" as display name in the config)
Learning Objectives
In the concepts the student should learn about the following topics and then practice them in the concept exercise.
- how dates/timestamps are represented internally, see e.g. MDN link
- how to create dates with
new Date
, incl. some of the commonly used variants Date.parse
Date.now
- getting and setting the date components (
getMonth
/setMonth
etc.) - how to calculate a time difference
- how to compare dates
The about.md file could additionally mention ...
- how out of range inputs are handled, see https://javascript.info/date#autocorrection
- Temporal as work-in-progress to address shortcoming of working with dates in JavaScript
Out of Scope
- Introduction to Temporal
- Internationalization API
- Third party packages for handling dates
Prerequisites
classes
Other prerequisites should be added as needed to solve the specific exercise.
Exercise Idea
There are two options for exercises from other languages that could be used as a template.
If you port one of these exercises, make sure only to include tasks that actually make sense in JavaScript and add value for the student. Feel free to remove/replace/add tasks as needed.
Resources
Here some links that might be helpful as a starting point and/or for the links section of the concept:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
- https://javascript.info/date
How to proceed
- First accept this issue by saying "I'd like to work on this" (no need to wait for a response, just go ahead).
- Use this issue to discuss any questions you have, what should be included in the content and what not and to collect more reference material.
- Create a PR and set "exercism/javascript" as reviewers. Additionally you can write in #maintaining-javascript on Slack that your PR is ready for review. Once you incorporated any critical feedback that the reviewer might give you and the PR is approved, it will be merged by a maintainer.