把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式。

易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1).

记住不要显示那些可以被推测出来的信息: 如果一个日期区间里结束日期与开始日期相差小于一年,则结束日期就不用写年份了;在这种情况下,如果月份开始和结束日期如果在同一个月,则结束日期月份也不用写了。

另外, 如果开始日期年份是当前年份,且结束日期与开始日期小于一年,则开始日期的年份也不用写。

function makeFriendlyDates(arr) {   //当前年份2017
var arr1 = arr[0].split("-");
var arr2 = arr[1].split("-");var month = { //月份
"01":"January",
"02":"February",
"03":"March",
"04":"April",
"05":"May",
"06":"June",
"07":"July",
"08":"August",
"09":"September",
"10":"October",
"11":"November",
"12":"December"
};
function getDay(day){ //日期结尾
if(day == "1" || day == "21" || day == "31"){
return "st";
}else if(day == "2" || day == "22"){
return "nd";
}else if(day == "3" || day == "23"){
return "rd";
}else {
return "th";
}
}
function getD(day){ //将01、02等改为1、2等 添加结尾
var n;
if(day / 10 < 1){
n = day % 10;
}else{
n = day;
}
return n + getDay(n);
}
function getDa(year, mon, day){ //拼接
var dArr;
if(!mon && !year){
dArr = getD(day);
}else if(!year){
dArr = month[mon] +" " + getD(day);
}else{
dArr = month[mon] +" " + getD(day)+ ", " + year;
}
return dArr;
}
var cha = arr2.join("") - arr1.join("");
if(cha < 0){ //不合理
return undefined;
}else if(cha > 0){ //不是同一天
if(cha < 10000){ //相差1年以内
if(arr1[0] == 2017){ //1年以内且开始年份为当前年份
if(arr1[1] == arr2[1]){ //月份相同
return [getDa("", arr1[1], arr1[2]), getDa("", "", arr2[2])];
}else{ //月份不同
return [getDa("", arr1[1], arr1[2]), getDa("", arr2[1], arr2[2])];
}
}else{ //1年以内且开始年份非当前年份
return [getDa(arr1[0], arr1[1], arr1[2]), getDa("", arr2[1], arr2[2])];
}
}else{ //相差大于1年
return [getDa(arr1[0], arr1[1], arr1[2]), getDa(arr2[0], arr2[1], arr2[2])];
}
}else{ //是同一天
return [getDa(arr1[0], arr1[1], arr1[2])];
}
}
makeFriendlyDates(["2001-12-20", "2001-12-20"]);

Friendly Date Ranges 让日期区间更友好的更多相关文章

  1. js-FCC算法Friendly Date Ranges

    让日期区间更友好! 把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式. 易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1). 记住不要显示那些可以被推 ...

  2. Friendly Date Ranges

    让日期区间更友好! 把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式. 易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1). 记住不要显示那些可以被推 ...

  3. FCC(ES6写法) Friendly Date Ranges

    把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式. 易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1). 包含当前年份和相同月份的时候,makeFri ...

  4. Friendly Date Ranges-freecodecamp算法题目

    Friendly Date Ranges 1.要求 把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式. 易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 ...

  5. Sql 获取日期区间

    获取制定日期区间 declare @d as date declare @d2 as date set @d = '2014-06-03' set @d2 ='2014-06-10' ),datead ...

  6. JS获取当前时间到30天之后的日期区间

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Java判断一个日期是否在下周日期区间

    Java实现判断一个日期是否在下周日期区间的方法 /** * 判断输入的日期是否在下周区间 * @return * @author nemowang */ public static boolean ...

  8. 从零开始学习PYTHON3讲义(四)让程序更友好

    <从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...

  9. java成神之——date和calendar日期的用法

    date和calendar日期的用法 util的data转换成sql的data 创建Date对象 格式化 Instant ChronoUnit LocalTime LocalDate LocalDat ...

随机推荐

  1. Linux知识要点(文件压缩打包解压缩)

    tar 的选项与参数非常的多!我们只讲几个常用的选项,更多选项您可以自行 man tar 查询啰! 其实最简单的使用 tar 就只要记忆底下的方式即可(gzip方式): 压 缩: tar -zcvf ...

  2. 什么是Servlet(原理,从访问到方法)

    Servlet简介 Servlet是SUN公司提供的一门用于开发动态WEB资源的技术.SUN公司在其API中提供了一个Servlet接口,用户若想开发一个动态WEB资源(即开发一个Java程序向浏览器 ...

  3. Python:游戏:扫雷(附源码)

    这次我们基于 pygame 来做一个扫雷,上次有园友问我代码的 python 版本,我说明一下,我所有的代码都是基于 python 3.6 的. 先看截图,仿照 XP 上的扫雷做的,感觉 XP 上的样 ...

  4. 版本控制工具——Git常用操作(下)

    本文由云+社区发表 作者:工程师小熊 摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码.使用分支.出现代码冲突的解决办法.紧急保存现场和恢复现场的操作.学会以后已经 ...

  5. 陪你解读Spring Batch(一)Spring Batch介绍

    前言 整个章节由浅入深了解Spring Batch,让你掌握批处理利器.面对大批量数据毫无惧色.本章只做介绍,后面章节有代码示例.好了,接下来是我们的主角Spring Batch. 1.1 背景介绍 ...

  6. 【带着canvas去流浪(6)】绘制雷达图

    目录 一. 任务说明 二. 重点提示 三. 示例代码 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文 ...

  7. c# jobject 的数据结构的解析:

    c# jobject 数据结构的解析:首先下载Newtonsoft.Json,增加引用using Newtonsoft.Json.Linq;把jobject的内容提取出来,Jobject的内容格式如下 ...

  8. 阿里、百度等多家公司Java面试记录与总结

    算算自己大概面试了近十家公司,也拿到了几个Offer,现在面试告一段落,简单总结下面试经验. 我现在主要的方向是Java服务端开发,把遇到的问题和大家分享一下,也谈谈关于技术人员如何有方向的提高自己, ...

  9. 在 DotNetCore 3.0 程序中使用通用协议方式启动文件关联应用

    问题描述 在传统的基于 .NET Framework 的 WPF 程序中,我们可以使用如下代码段启动相关的默认应用: # 启动默认文本编辑器打开 helloworld.txt Process.Star ...

  10. 第八课 表格 html5学习3

    表格用来处理表格式数据的,不是用来布局的. 一.基本语法格式 <table> <tr> 行标签 <td></td> 单元格标签 </tr> ...