Skip to content

Instantly share code, notes, and snippets.

@michaelrepper
Last active August 29, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelrepper/859f367a3fac10ba7770 to your computer and use it in GitHub Desktop.
Save michaelrepper/859f367a3fac10ba7770 to your computer and use it in GitHub Desktop.
r/Dailyprogrammer Challenge #201 Easy - Rust Date Math
///////////////////////////////////////////////////
// r/Dailyprogrammer #201 Easy //
// coded by Michael Repper //
// query [a * t] gridoodle [ d * o * t ] com //
///////////////////////////////////////////////////
extern crate time;
use std::num::SignedInt;
////
// Takes 2 dates and returns the difference in days.
// Dates should be passed as arrays in the form:
// [mm, dd, YYYY]
////
fn days_diff(date_1:&[int, ..3], date_2:&[int, ..3] )
{
let proc_1 = 365 * date_1[2] + date_1[2] / 4 - date_1[2] / 100 + date_1[2] / 400 + date_1[1] + (153 * date_1[0] + 8) / 5;
let proc_2 = 365 * date_2[2] + date_2[2] / 4 - date_2[2] / 100 + date_2[2] / 400 + date_2[1] + (153 * date_2[0] + 8) / 5;
let diff = (proc_1 - proc_2).abs();
println!("{} days from {}-{}-{} to {}-{}-{}", diff, date_1[0], date_1[1], date_1[2], date_2[0], date_2[1], date_2[2]);
}
fn main()
{
let date_1:[int, ..3];
let date_2:[int, ..3];
date_1 = [01, 01, 1901];
date_2 = [01, 01, 3001];
days_diff(&date_1, &date_2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment