Android:从 GregorianCalendar 对象获取年、月、日

标签 android gregorian-calendar

GregorianCalendar 构造函数要求以下内容:

GregorianCalendar(int year, int month, int dayOfMonth);

如何从我创建的对象中提取年、月和日。现在我正在使用 object.YEAR、object.MONTH 和 object.DAY_OF_MONTH,但这似乎没有给我正确的数字。

谢谢。

在这里,我根据用户点击的日历日期获取日期。然后用户可以在该日期中输入一些信息,这些信息存储在以 GregorianCalendar 为键的 HashMap 中。

cal.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {

                selectedDate = new GregorianCalendar(year, month, dayOfMonth);

在这里,我试图将 GregorianCalendar 年、月、日参数中的日期写入一个文件,以供稍后使用。

private void writeToFile() {
        try
        {
            PrintWriter writer = new PrintWriter(file, "UTF-8");
            for (GregorianCalendar gregObject: recipes.keySet()) {
                String[] value = recipes.get(gregObject);
                int y = gregObject.YEAR;
                int m = gregObject.MONTH;
                int d = gregObject.DAY_OF_MONTH;

                writer.printf("%d %d %d ", y, m, d);

这是我从文件中读取的方式。当我从文件中读取时,我得到的年、月和日数字 1、2、5 是错误的。阅读的其余信息是正确的。

try
            {
                Scanner getLine = new Scanner(file);
                Scanner tokenizer;

                while (getLine.hasNextLine()) {
                    String line = getLine.nextLine();
                    tokenizer = new Scanner(line);
                    System.out.println(line);

                    while (tokenizer.hasNextInt()) {
                        int y1 = tokenizer.nextInt();
                        int m1 = tokenizer.nextInt();
                        int d1 = tokenizer.nextInt();

显然,我认为我错误地将年、月和日写入文件,因此我试图找出从 GregorianCalendar 对象中提取年、月和日的正确方法。

最佳答案

希望以下内容有所帮助:我使用 2015/06/10 作为输入。请注意月份值为 0(一月)- 11(十二月)。

package demo;

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * Create on 4/3/16.
 */
public class TestCalendar {

    public static void main(String [] args){
        Calendar cal = new GregorianCalendar(2015,05,10); // Month values are 0(Jan) - 11 (Dec). So for June it is 05
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH);      // 0 - 11 
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        // Following must output 2015/06/10
        System.out.printf("Provided date is %4d/%02d/%02d", year, month+1,     dayOfMonth);
    }
}

关于Android:从 GregorianCalendar 对象获取年、月、日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392420/

相关文章:

android - 是否可以通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

java - 从循环中获取值(value)

Java公历计时器

java - 将 jcalendar 日期转换为 XMLGregorianCalendar 获取 Null 值

android - Jetpack Compose 与一堆卡片的时序问题

android - 纸牌游戏 - 如何画画

Android FCM通知分组

java - Groovy/Grails - Jollyday CalenderUtil - 无方法签名

javascript - 将公历日期转换为回历日期

c# - 求某公历年农历新年公历的算法