首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从我的日历中获取日期?

如何从我的日历中获取日期?
EN

Stack Overflow用户
提问于 2010-08-26 19:56:08
回答 1查看 82.8K关注 0票数 26

我有一个包含一个人的生日的Map作为GregorianCalendar

例如:

{
    motherEmailID=null,
    coreType=Ticket,
    _NULL=null,
    additionalFaclitiesProvided=[],
    dateOfBirth=java.util.GregorianCalendar[
        time=585340200000,
        areFieldsSet=false,
        areAllFieldsSet=false,
        lenient=true,
        zone=sun.util.calendar.ZoneInfo[id="GMT",
    offset=0,
    dstSavings=0,
    useDaylight=false,
    transitions=0,
    lastRule=null],
        firstDayOfWeek=1,
        minimalDaysInFirstWeek=1,
        ERA=1,
        YEAR=1988,
        MONTH=6,
        WEEK_OF_YEAR=30,
        WEEK_OF_MONTH=4,
        DAY_OF_MONTH=20,
        DAY_OF_YEAR=202,
        DAY_OF_WEEK=4,
        DAY_OF_WEEK_IN_MONTH=3,
        AM_PM=0,
        HOUR=0,
        HOUR_OF_DAY=0,
        MINUTE=0,
        SECOND=0,
        MILLISECOND=0,
        ZONE_OFFSET=19800000,
        DST_OFFSET=0],
    targetEnd=null,
    year_semester=null
}

我需要一个Date,但在我的数据库中它只有Calendar格式。数据库中列的数据类型为DateTime。如何获取Date格式的生日?

EN

回答 1

Stack Overflow用户

发布于 2014-01-29 23:41:37

复制并运行示例。

只需更改模式即可测试不同的开关条件。

对于封装,只需将两个方法设置为私有。格式化日期不是您的工作,因为方法现在返回日期,它取决于调用者使用他想要的任何格式。

import java.util.Date;
import java.util.GregorianCalendar;

public class RandomDateOfBirthGenerator {

    private static GregorianCalendar gc = new GregorianCalendar();

    public static enum Mode {
        SENIOR, ADULT, YOUTH, CHILD
    }

    public static Date generateRandomDateOfBirth(Mode mode) {

        int year = 0;

        switch(mode){
        case SENIOR:
            year = randBetween(1900, 1940);
            break;

        case ADULT:
            year = randBetween(1941, 1995);
            break;

        case YOUTH:
            year = randBetween(1995, 2002);
            break;

        case CHILD:
            year = randBetween(2002, 2014);
            break;
        }

        gc.set(gc.YEAR, year);

        int dayOfYear = randBetween(1, gc.getActualMaximum(gc.DAY_OF_YEAR));

        gc.set(gc.DAY_OF_YEAR, dayOfYear);

        return gc.getTime();
    }

    private static int randBetween(int start, int end) {
        return start + (int) Math.round(Math.random() * (end - start));
    }

    public static void main(String[] args) {
        System.out.println(generateRandomDateOfBirth(Mode.CHILD));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3574811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档