有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从日期获取当前月份

我需要将长值转换为任意日期。接下来,我要写出月份,转换为字符串。我想在文本视图上显示月份

我试过:

Date dt = new Date();
Calendar cal= Calendar.getInstance();
cal.setTime(dt);  //get current time

long dateAsLong = calendar.getTimeInMillis(); // get currentTime as long

CalendarView.setDate(dateAsLong); // give the view CalendarView the current date 


TextView tv= (TextView) findViewById(R.id.TextViewDate);
tv.setText(String.valueOf(dateAsLong)); // <-- but this is wrong

共 (4) 个答案

  1. # 1 楼答案

    tl;博士

    convert a long value to … date … month written out

    Instant.ofEpochMilli( myMillis )
           .atZone( ZoneId.of( "Pacfic/Auckland" ) ) 
           .getMonth()
           .getDisplayName( TextStyle.FULL , Locale.ITALY )  // Or Locale.US, Locale.UK, etc.
    

    ottobre

    避免遗留日期时间类

    其他答案使用了麻烦的旧日期时间类,这些类现在是遗留的,被java所取代。时间课

    爪哇。时间

    假设long值表示自1970年第一个UTC时刻以来的毫秒计数,请使用Instant

    ^{}类表示UTC中时间轴上的一个时刻,分辨率为nanoseconds(最多九(9)位小数)

    Instant instant = Instant.ofEpochMilli( myMillis ) ;
    

    你想写一个月。确定一个月意味着确定一个日期。确定日期需要时区。在任何一个特定的时刻,世界各地的日期因地区而异。例如,午夜过后几分钟在Paris France是新的一天,而在Montréal Québec仍然是“昨天”

    continent/region的格式指定一个proper time zone name,例如^{}^{}Pacific/Auckland。千万不要使用3-4个字母的缩写,比如ESTIST,因为它们不是真正的时区,没有标准化,甚至不是唯一的(!)

    ZoneId z = ZoneId.of( "Africa/Tunis" ); 
    ZonedDateTime zdt = instant.atZone( z ) ;  // Same moment in history, but adjusted into the wall-clock time of a particular region of people.
    

    现在进行一个月的审问。爪哇。时间类包括一个Month枚举,代表一月到十二月

    Month m = zdt.getMonth() ;
    

    Monthenum包含一些方便的方法,比如以自动本地化的格式生成字符串

    String output = m.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH )  ;  // Or Locale.US, Locale.ITALY, etc.
    

    关于java。时间

    java.time框架内置于Java8及更高版本中。这些类取代了麻烦的legacy日期时间类,如^{}^{}、&^{}

    目前位于maintenance modeJoda-Time项目建议迁移到java.time

    要了解更多信息,请参阅Oracle Tutorial。并在Stack Overflow中搜索许多示例和解释。规范是JSR 310

    在哪里可以获得java。时间课

    ThreeTen-Extra项目扩展了java。有额外课程的时间。这个项目是java未来可能增加的一个试验场。时间你可以在这里找到一些有用的类,比如^{}^{}^{}more

  2. # 2 楼答案

    首先从Long那里得到日期

    long val = 1346524199000l;
    Date date=new Date(val);
    SimpleDateFormat df2 = new SimpleDateFormat("MMM");
    String month= df2.format(date);
    

    一旦你有了字符串形式的月份,使用下面的代码将其转换为android textView

    textview.setText(month);
    
  3. # 3 楼答案

        Date date = new Date();
        System.out.println(date.getTime());//Timestamp 
        long timestamp = date.getTime();
        date = new Date(timestamp);
        String month = new SimpleDateFormat("MMMM").format(date);//Get month string
        System.out.println(month);
    
  4. # 4 楼答案

    使用以下代码:

        long longDate=12334;
        Date date=new Date(longDate);
        String month=new SimpleDateFormat("MMMM").format(date); //you can use month for display
    

    希望有帮助