zoukankan      html  css  js  c++  java
  • 日期改写

    让日期区间更友好!

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

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

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

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

    例如:

    makeFriendlyDates(["2016-07-01", "2016-07-04"]) 应该返回 ["July 1st, 2016","4th"]

    makeFriendlyDates(["2016-07-01", "2018-07-04"]) 应该返回 ["July 1st, 2016", "July 4th, 2018"].

    // 简单模拟 

    function makeFriendlyDates(arr) {
        var month = [
            "January", "February", "March", "April", "May", "June",
            "July",  "August", "September", "October", "November", "December"
            ];
        var dayth = ["st", "nd", "rd", "th"];
        var ans = [];
        var date1 = arr[0].split("-");
        var date2 = arr[1].split("-");
        
        var year1 = (Number(date1[0]) == 2017 && ((new Date(arr[1]) - new Date(arr[0])) / 1000 / 3600 / 24 < 365)) ? "" : (", " + date1[0]);
        var month1 = month[Number(date1[1]) - 1] + " ";
        var day1 = Number(date1[2]) <= 3 ? (parseInt(date1[2]) + dayth[date1[2] - 1]) : (parseInt(date1[2]) + dayth[3]);
        var ans1 = month1 + day1 + year1;
        
        if(new Date(arr[1]).valueOf() == new Date(arr[0]).valueOf() ) {
            ans1 = month1 + day1 + ", " + date1[0]
            return [ans1];
        }
        
        var year2 = (((new Date(arr[1]) - new Date(arr[0])) / 1000 / 3600 / 24 < 365)) ? "" : (", " + date2[0]);
        var month2 = ((Number(date1[0]) == Number(date2[0])) && (Number(date1[1]) == Number(date2[1]))) ? "" : month[Number(date2[1]) - 1] + " ";
        
        var day2 = Number(date2[2]) <= 3 ? (parseInt(date2[2]) + dayth[date2[2] - 1]) : (parseInt(date2[2]) + dayth[3]);
        var ans2 = month2 + day2 + year2;
        
        return [ans1, ans2];
    }
    makeFriendlyDates(["2018-01-13", "2018-01-13"])
  • 相关阅读:
    [LeetCode] Add and Search Word
    [LintCode] Delete Digits
    [LintCode] Number of Airplanes in the Sky
    [LintCode] Subarray Sum Closest
    [LeetCode] Course Schedule II
    [LeetCode] Minimum Size Subarray Sum
    [LeetCode] Implement Trie (Prefix Tree)
    [Leetcode] Course Schedule
    [hihoCoder] 博弈游戏·Nim游戏
    [hihoCoder] #1055 : 刷油漆
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/8269293.html
Copyright © 2011-2022 走看看