• [Java] SoapUI使用Java获取各时间日期方法


    import java.util.*;
    import java.text.SimpleDateFormat;
    
    // current date
    String dateNew = today()
    
    // tomorrow
    String tomorrow = tomorrow()
    
    //  yesterday
    String yesterday = yesterday()
    
    // the day before yesterday
    String theDayBeforeYesterday = theDayBeforeYesterday()
    
    // Last Market Close
    String lastMarketClose = lastMarketClose()
    log.info "------> lastMarketClose : "+lastMarketClose
    
    // Last Market Close -2 days
    String lastMarketCloseMinus2Days = lastMarketCloseMinus2Days()
    
    // Two years ago of Last Market Close -2 days
    String twoYearsAgoOfLastMarketCloseMinus2Days = twoYearsAgoOfLastMarketCloseMinus2Days(lastMarketCloseMinus2Days)
    
    // yesterday of Last Market Close
    String yesterdayOfLastMarketClose = yesterdayOfLastMarketClose(lastMarketClose)
    
    // a month ago of Last Market Close
    String aMonthAgoOfLastMarketClose = aMonthAgoOfLastMarketClose(lastMarketClose)
    
    // three months ago of Last Market Close
    String threeMonthsAgoOfLastMarketClose = threeMonthsAgoOfLastMarketClose(lastMarketClose)
    
    // three years ago of Last Market Close
    String threeYearsAgoOfLastMarketClose = threeYearsAgoOfLastMarketClose(lastMarketClose)
    log.info "------> threeYearsAgoOfLastMarketClose : "+threeYearsAgoOfLastMarketClose
    
    // the last day of last week
    String theLastDayOfLastWeek = theLastDayOfLastWeek()
    
    // the last day of  last month
    String theLastDayOfLastMonth = theLastDayOfLastMonth()
    
    // Get the same day of last month
    String theSameDayOfLastMonth = theSameDayOfLastMonth()
    
    // The first day of the quarter
    String theFirstDayOfTheQuarter = theFirstDayOfTheQuarter()
    
    // The last day of last quarter
    String theLastDayOfLastQuarter = theLastDayOfLastQuarter(theFirstDayOfTheQuarter)
    
    //  a year ago after The last day of last quarter
    String aYearAgoAfterTheLastDayOfLastQuarter = aYearAgoAfterTheLastDayOfLastQuarter(theFirstDayOfTheQuarter)
    
    // The first day of last quarter
    String theFirstDayOfLastQuarter = theFirstDayOfLastQuarter(theFirstDayOfTheQuarter)
    
    // The last day of two quarters ago
    String theLastDayOfTwoQuartersAgo = theLastDayOfTwoQuartersAgo(theLastDayOfLastQuarter)
    
    // The first day of six months ago after two quarters 
    String theFirstDayOfSixMonthsAgoAfterTwoQuarters = theFirstDayOfSixMonthsAgoAfterTwoQuarters(theLastDayOfTwoQuartersAgo)
    
    // yesterday of  three months ago
    String yesterdayOfThreeMonthsAgo = yesterdayOfThreeMonthsAgo()
    
    // The first day of  two months ago
    String theFirstDayOfTwoMonthsAgo = theFirstDayOfTwoMonthsAgo()
    
    // The last day of  two months ago
    String theLastDayOfTwoMonthsAgo = theLastDayOfTwoMonthsAgo()
    
    // The first day of  three months ago
    String theFirstDayOfThreeMonthsAgo = theFirstDayOfThreeMonthsAgo()
    
    // The first day of  six months ago
    String theFirstDayOfSixMonthsAgo = theFirstDayOfSixMonthsAgo()
    
    // The first day of this year
    String theFirstDayOfThisYear = theFirstDayOfThisYear()
    
    // The last day of last year
    String theLastDayOfLastYear = theLastDayOfLastYear()
    
    // tomorrow of  last year
    String tomorrowOfLastYear = tomorrowOfLastYear()
    
    // the first day of this month last year
    String theFirstDayOfThisMonthLastYear = theFirstDayOfThisMonthLastYear()
    
    // the first day of last year
    String theFirstDayOfLastYear = theFirstDayOfLastYear()
    
    // the same day of this month three years ago
    String theSameDayOfThisMonthThreeYearsAgo = theSameDayOfThisMonthThreeYearsAgo()
    
    // the first day of this month three years ago
    String theFirstDayOfThisMonthThreeYearsAgo = theFirstDayOfThisMonthThreeYearsAgo()
    
    // the first day of three years ago
    String theFirstDayOfThreeYearsAgo = theFirstDayOfThreeYearsAgo()
    
    // Set the project level property : currentDate,yesterDay,lastMonth , its value will updated with dateNew
    testRunner.testCase.testSuite.project.setPropertyValue( "currentDate", dateNew )
    testRunner.testCase.testSuite.project.setPropertyValue( "tomorrow", tomorrow )
    testRunner.testCase.testSuite.project.setPropertyValue( "yesterday", yesterday )
    testRunner.testCase.testSuite.project.setPropertyValue( "theDayBeforeYesterday", theDayBeforeYesterday )
    testRunner.testCase.testSuite.project.setPropertyValue( "lastMarketClose", lastMarketClose )
    testRunner.testCase.testSuite.project.setPropertyValue( "lastMarketCloseMinus2Days", lastMarketCloseMinus2Days )
    testRunner.testCase.testSuite.project.setPropertyValue( "twoYearsAgoOfLastMarketCloseMinus2Days", twoYearsAgoOfLastMarketCloseMinus2Days )
    testRunner.testCase.testSuite.project.setPropertyValue( "threeYearsAgoOfLastMarketClose", threeYearsAgoOfLastMarketClose )
    testRunner.testCase.testSuite.project.setPropertyValue( "theDayBeforeYesterday", theDayBeforeYesterday )
    testRunner.testCase.testSuite.project.setPropertyValue( "theLastDayOfLastWeek", theLastDayOfLastWeek )
    testRunner.testCase.testSuite.project.setPropertyValue( "yesterdayOfLastMarketClose", yesterdayOfLastMarketClose )
    testRunner.testCase.testSuite.project.setPropertyValue( "aMonthAgoOfLastMarketClose", aMonthAgoOfLastMarketClose )
    testRunner.testCase.testSuite.project.setPropertyValue( "threeMonthsAgoOfLastMarketClose", threeMonthsAgoOfLastMarketClose )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfTheQuarter", theFirstDayOfTheQuarter )
    testRunner.testCase.testSuite.project.setPropertyValue( "theLastDayOfLastQuarter", theLastDayOfLastQuarter )
    testRunner.testCase.testSuite.project.setPropertyValue( "aYearAgoAfterTheLastDayOfLastQuarter", aYearAgoAfterTheLastDayOfLastQuarter )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfLastQuarter", theFirstDayOfLastQuarter )
    testRunner.testCase.testSuite.project.setPropertyValue( "theLastDayOfTwoQuartersAgo", theLastDayOfTwoQuartersAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfSixMonthsAgoAfterTwoQuarters", theFirstDayOfSixMonthsAgoAfterTwoQuarters )
    testRunner.testCase.testSuite.project.setPropertyValue( "theSameDayOfLastMonth", theSameDayOfLastMonth )
    testRunner.testCase.testSuite.project.setPropertyValue( "theLastDayOfLastMonth", theLastDayOfLastMonth )
    testRunner.testCase.testSuite.project.setPropertyValue( "yesterdayOfThreeMonthsAgo", yesterdayOfThreeMonthsAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfTwoMonthsAgo", theFirstDayOfTwoMonthsAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theLastDayOfTwoMonthsAgo", theLastDayOfTwoMonthsAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfThreeMonthsAgo", theFirstDayOfThreeMonthsAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfSixMonthsAgo", theFirstDayOfSixMonthsAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfThisYear", theFirstDayOfThisYear )
    testRunner.testCase.testSuite.project.setPropertyValue( "theLastDayOfLastYear", theLastDayOfLastYear )
    testRunner.testCase.testSuite.project.setPropertyValue( "tomorrowOfLastYear", tomorrowOfLastYear )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfThisMonthLastYear", theFirstDayOfThisMonthLastYear )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfLastYear", theFirstDayOfLastYear )
    testRunner.testCase.testSuite.project.setPropertyValue( "theSameDayOfThisMonthThreeYearsAgo", theSameDayOfThisMonthThreeYearsAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfThisMonthThreeYearsAgo", theFirstDayOfThisMonthThreeYearsAgo )
    testRunner.testCase.testSuite.project.setPropertyValue( "theFirstDayOfThreeYearsAgo", theFirstDayOfThreeYearsAgo )
    
    //**********************************************************************Methods**************************************************************************
    
    def today(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def yesterday(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.DATE, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theDayBeforeYesterday(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.DATE, -2);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theLastDayOfLastMonth(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.MONTH, -1);
        lastDate.set(Calendar.DATE, 1);
        lastDate.roll(Calendar.DATE, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theSameDayOfLastMonth(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.roll(Calendar.MONTH, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def tomorrow(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def yesterdayOfThreeMonthsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.MONTH, -3);
        lastDate.add(Calendar.DATE, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfTwoMonthsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.MONTH, -2);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theLastDayOfTwoMonthsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.MONTH, -2);
        lastDate.set(Calendar.DATE, 1);
        lastDate.roll(Calendar.DATE, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfThreeMonthsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.MONTH, -3);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfSixMonthsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.MONTH, -6);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def tomorrowOfLastYear(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR, -1);
        lastDate.add(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theSameDayOfThisMonthThreeYearsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR, -3);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfThisMonthThreeYearsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR, -3);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfThreeYearsAgo(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR, -3);
        lastDate.set(Calendar.MONTH, 0);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfThisYear(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.set(Calendar.MONTH, 0);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theLastDayOfLastYear(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR, -1);
        lastDate.set(Calendar.MONTH, 11);
        lastDate.set(Calendar.DATE, 31);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfTheQuarter(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        int i = 0
        int j = 0
        int month = lastDate.get(Calendar.MONTH)
        if (month >= 1 && month <= 3) {
            j = 0;
        }
        if (month >= 4 && month <= 6) {
            j = 3;
        }
        if (month >= 7 && month <= 9) {
            j = 6;
        }
        if (month >= 10 && month <= 12) {
            j = 9;
        }
        lastDate.set(Calendar.MONTH, j);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theLastDayOfLastQuarter(String theFirstDayOfTheQuarter){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(theFirstDayOfTheQuarter)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.MONTH, -1);
        lastDate.roll(Calendar.DATE, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def aYearAgoAfterTheLastDayOfLastQuarter(String theFirstDayOfTheQuarter){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(theFirstDayOfTheQuarter)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.YEAR, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfLastQuarter(String theFirstDayOfTheQuarter){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(theFirstDayOfTheQuarter)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.MONTH, -3);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theLastDayOfTwoQuartersAgo(String theLastDayOfLastQuarter){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(theLastDayOfLastQuarter)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.MONTH, -3);
        lastDate.set(Calendar.DATE, 1);
        lastDate.roll(Calendar.DATE, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfSixMonthsAgoAfterTwoQuarters(String theLastDayOfTwoQuartersAgo){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(theLastDayOfTwoQuartersAgo)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.MONTH, -8);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfThisMonthLastYear(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR, -1);
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theFirstDayOfLastYear(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.YEAR, -1);
        lastDate.set(Calendar.MONTH,0)
        lastDate.set(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def theLastDayOfLastWeek(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.WEEK_OF_MONTH,-1);
        lastDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def lastMarketClose(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        String ss = lastDate.get(Calendar.DAY_OF_WEEK)
        if ("1".equals(ss)){
            lastDate.add(Calendar.WEEK_OF_MONTH,-1);
            lastDate.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY)
        }
        if ("7".equals(ss)){
            lastDate.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY)
        }
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def lastMarketCloseMinus2Days(){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar lastDate = Calendar.getInstance();
        lastDate.add(Calendar.DATE, -2);
        String ss = lastDate.get(Calendar.DAY_OF_WEEK)
        if ("1".equals(ss) ){
            lastDate.add(Calendar.WEEK_OF_MONTH,-1);
            lastDate.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY)
        }
        if ("7".equals(ss)){
            lastDate.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY)
        }
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def twoYearsAgoOfLastMarketCloseMinus2Days(String lastMarketCloseMinus2Days){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(lastMarketCloseMinus2Days)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.YEAR, -2)
        lastDate.add(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def yesterdayOfLastMarketClose(String lastMarketClose){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(lastMarketClose)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.DATE, -1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def aMonthAgoOfLastMarketClose(String lastMarketClose){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(lastMarketClose)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.MONTH, -1)
        lastDate.add(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def threeMonthsAgoOfLastMarketClose(String lastMarketClose){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(lastMarketClose)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.MONTH, -3)
        lastDate.add(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
    
    def threeYearsAgoOfLastMarketClose(String lastMarketClose){
        String str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(lastMarketClose)
        Calendar lastDate = Calendar.getInstance();
        lastDate.setTime(date);
        lastDate.add(Calendar.YEAR, -3)
        lastDate.add(Calendar.DATE, 1);
        str = sdf.format(lastDate.getTime());
        return str;
    }
  • 相关阅读:
    CodeForces 408E Curious Array(组合数学+差分)
    CodeForces 519E A and B and Lecture Rooms(倍增)
    洛谷 4051 [JSOI2007]字符加密(后缀数组)
    哇,两门学考都是A(〃'▽'〃)
    BZOJ 1977 严格次小生成树
    XJOI 3606 最大子矩形面积/LightOJ 1083 Histogram(单调栈/笛卡尔树)
    XJOI 3629 非严格次小生成树(pqq的礼物)
    XJOI 3363 树4/ Codeforces 739B Alyona and a tree(树上差分+路径倍增)
    [转载]别让用户发呆—设计中的防呆策略
    Linux下的链接文件
  • 原文地址:https://www.cnblogs.com/wynlfd/p/5764991.html
Copyright © 2020-2023  润新知