StackOverflow上有很多这样的问题,但没有人能得到我需要的答案。我看过这三个问题:
Get Value Of Day Month form Date Object in Android?
How to get month and day in android?
Get current time and date on Android
从这3个问题中我了解到,要获得日期和时间,我们需要使用日历。我访问了它的文档页面,但这太难理解了。
现在我的问题是我希望得到当天,即当月,即11月,当前年份,即2014年和小时,分钟,非秒和上午或下午。
直到这里我才知道:
Calendar c = Calendar.getInstance();
现在我该怎么做?
答案 0 :(得分:15)
您可以使用
自定义所需的格式DateFormat df = new SimpleDateFormat("dd MM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());
答案 1 :(得分:8)
Calendar calander = Calendar.getInstance();
cDay = calander.get(Calendar.DAY_OF_MONTH);
cMonth = calander.get(Calendar.MONTH) + 1;
cYear = calander.get(Calendar.YEAR);
selectedMonth = "" + cMonth;
selectedYear = "" + cYear;
cHour = calander.get(Calendar.HOUR);
cMinute = calander.get(Calendar.MINUTE);
cSecond = calander.get(Calendar.SECOND);
答案 2 :(得分:4)
使用SimpleDateFormat以所需格式获取日期和时间:
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd,MMMM,YYYY hh,mm,a");
String strDate = sdf.format(c.getTime());
答案 3 :(得分:2)
Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault());
Date currentTime = localCalendar.getTime();
int currentDay = localCalendar.get(Calendar.DATE);
int currentMonth = localCalendar.get(Calendar.MONTH) + 1;
int currentYear = localCalendar.get(Calendar.YEAR);
int currentDayOfWeek = localCalendar.get(Calendar.DAY_OF_WEEK);
int currentDayOfMonth = localCalendar.get(Calendar.DAY_OF_MONTH);
int CurrentDayOfYear = localCalendar.get(Calendar.DAY_OF_YEAR);
System.out.println("Current Date and time details in local timezone");
System.out.println("Current Date: " + currentTime);
System.out.println("Current Day: " + currentDay);
System.out.println("Current Month: " + currentMonth);
System.out.println("Current Year: " + currentYear);
System.out.println("Current Day of Week: " + currentDayOfWeek);
System.out.println("Current Day of Month: " + currentDayOfMonth);
System.out.println("Current Day of Year: " + CurrentDayOfYear);
答案 4 :(得分:1)
我想获取当前日期,即12,当前月份,即11月,当前年份,即2014,以及小时,分钟,而非秒和上午或下午。
ZonedDateTime
.now(
ZoneId.of( "Pacific/Auckland" ) // Or "Asia/India", "Africa/Tunis", etc.
)
.format(
DateTimeFormatter
.ofPattern(
"dd MMMM uuuu HH:mm"
)
.withLocale(
Locale.CANADA_FRENCH // Or `Locale.US`, or `new Locale( "en" , "IN" )` for English language with India culture.
)
)
请参阅此code run live at IdeOne.com。
2019年9月28日08:48
从这三个问题中,我了解到要获取日期和时间,我们需要使用日历。
不。
Calendar
类以及Date
和SimpleDateFormat
等都是可怕的。这些类都在多年前被JSR 310中定义的现代 java.time 类所取代。
现在我的问题是我想获取当前日期(即12月),当前月份(即11月),当前年份(即2014年)以及小时,分钟,而不是秒和上午或下午。
确定日期和时间需要一个时区。在任何给定时刻,日期都会在全球范围内变化。例如,Paris France午夜之后的几分钟是新的一天,而Montréal Québec仍然是“昨天”。
如果未指定时区,则JVM隐式应用其当前的默认时区。该默认值可能在运行时(!)期间change at any moment,因此您的结果可能会有所不同。最好将您的期望/期望时区明确指定为参数。如果要依赖JVM的当前默认时区,请致电ZoneId.systemDefault()
来表明您的意图。如果紧急,请与您的用户确认区域。
以Continent/Region
的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或Pacific/Auckland
。切勿使用2-4个字母的缩写,例如EST
或IST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
从某个地区(某个时区)的人们使用的挂钟时间中捕获当前时刻。
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
如果您不在乎秒或小数秒,请截断。
ZonedDateTime zdt = ZonedDateTime.now( z ).truncatedTo( ChronoUnit.MINUTES ) ;
生成标准ISO 8601格式的字符串,明智地扩展以将时区的名称附加在方括号中。
String output = zdt.toString() ;
2019-09-28T01:42 + 05:30 [亚洲/加尔各答]
生成自动本地化的字符串。
Locale locale = new Locale( "en" , "IN" ) ; // English language, India culture.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.LONG ).withLocale( locale ) ;
String output2 = zdt.format( f ) ;
2019年9月28日美国标准时间上午1:42:00
请参阅此code run live at IdeOne.com。
java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
目前位于Joda-Time的maintenance mode项目建议迁移到java.time类。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
在哪里获取java.time类?
答案 5 :(得分:0)
public class XYZ extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
Calendar c = Calendar.getInstance();
System.out.println("Current time => "+c.getTime());
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = df.format(c.getTime());
// formattedDate have current date/time
Toast.makeText(this, formattedDate, Toast.LENGTH_SHORT).show();
// Now we display formattedDate value in TextView
TextView txtView = new TextView(this);
txtView.setText("Current Date and Time : "+formattedDate);
txtView.setGravity(Gravity.CENTER);
txtView.setTextSize(20);
setContentView(txtView);
}
}
Calendar calander = Calendar.getInstance();
cDay = calander.get(Calendar.DAY_OF_MONTH);
cMonth = calander.get(Calendar.MONTH) + 1;
cYear = calander.get(Calendar.YEAR);
selectedMonth = "" + cMonth;
selectedYear = "" + cYear;
cHour = calander.get(Calendar.HOUR);
cMinute = calander.get(Calendar.MINUTE);
cSecond = calander.get(Calendar.SECOND);