简体   繁体   English

"如何获取当前月份、上个月和两个月前"

[英]How to get current month, previous month and two months ago

I need a function that will return three strings:我需要一个返回三个字符串的函数:

  1. first string will contain the current month and the current year.第一个字符串将包含当前月份和当前年份。<\/li>
  2. second string will contain the previous month and current year.第二个字符串将包含上个月和当前年份。<\/li>
  3. third string will contain two months ago and current year.第三个字符串将包含两个月前和当前年份。<\/li><\/ol>

    This, of course, should also work if current month is January, for example.当然,例如,如果当前月份是 1 月,这也应该有效。

    So right now, the results should be:所以现在,结果应该是:

    • September 2015 2015 年 9 月<\/li>
    • August 2015 2015 年 8 月<\/li>
    • July 2015 2015 年 7 月<\/li><\/ul>"

A Java 8 version (using the java.time.YearMonth class) is here . Java 8 版本(使用java.time.YearMonth类)在这里

YearMonth thisMonth    = YearMonth.now();
YearMonth lastMonth    = thisMonth.minusMonths(1);
YearMonth twoMonthsAgo = thisMonth.minusMonths(2);

DateTimeFormatter monthYearFormatter = DateTimeFormatter.ofPattern("MMMM yyyy");

System.out.printf("Today: %s\n", thisMonth.format(monthYearFormatter));
System.out.printf("Last Month: %s\n", lastMonth.format(monthYearFormatter));
System.out.printf("Two Months Ago: %s\n", twoMonthsAgo.format(monthYearFormatter));

This prints the following:这将打印以下内容:

Today: September 2015今天:2015 年 9 月

Last Month: August 2015上个月:2015 年 8 月

Two Months Ago: July 2015两个月前:2015 年 7 月

Calendar c = new GregorianCalendar();
c.setTime(new Date());
SimpleDateFormat sdf = new SimpleDateFormat("MMMM YYYY");
System.out.println(sdf.format(c.getTime()));   // NOW
c.add(Calendar.MONTH, -1);
System.out.println(sdf.format(c.getTime()));   // One month ago
c.add(Calendar.MONTH, -1);
System.out.println(sdf.format(c.getTime()));   // Two month ago

Below is an example using LocalDate written in Kotlin.下面是一个使用 Kotlin 编写的LocalDate的示例。

import java.time.LocalDate
import java.time.format.TextStyle
import java.util.Locale

val currentMonth = LocalDate.now().month.getDisplayName(TextStyle.FULL, Locale.getDefault()) //February
val prevMonth = LocalDate.now().minusMonths(1).getDisplayName(TextStyle.FULL, Locale.getDefault()) //January
val twoMonthsAgo = LocalDate.now().minusMonths(2) //DECEMBER
  1. Get the Months you need (Current, Current -1 and Current -2) see here获取您需要的月份(当前、当前 -1 和当前 -2)请参见此处
  2. Get the Textual form of the Months like shown here获取此处显示的月份的文本形式
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public static void main(String[] args) {


Date currentDate = null;
String dateString = null;
try {
    Calendar c = new GregorianCalendar();
    c.set(Calendar.HOUR_OF_DAY, 0); // anything 0 - 23
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    //c.add(Calendar.MONTH, -1);//previous month
    //c.add(Calendar.MONTH, -2);//two months back
    currentDate = c.getTime(); // the midnight, that's the first second
    // of the day.


    SimpleDateFormat sdfr = new SimpleDateFormat("MMMM yyyy");
    dateString = sdfr.format(currentDate);
} catch (Exception e) {
    e.printStackTrace();
}
System.out.println(dateString); //prints current date

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM