Android 通过System.currentTimeMillis() 获取前两个月日期
时间: 2024-11-03 12:22:33 浏览: 35
Android 中,如果你想要获取当前日期之前的两个月,你可以使用 `Calendar` 类配合 `System.currentTimeMillis()` 函数来实现。首先,你需要创建一个 Calendar 实例,然后设置它到过去的某个时间点。这里是步骤:
1. 创建一个 Calendar 对象并将其初始化为当前时间:
```java
Calendar calendar = Calendar.getInstance();
```
2. 调整月份,向前回溯两个月:
```java
calendar.add(Calendar.MONTH, -2); // 减去两个月
```
3. 获取指定日期的时间戳:
```java
long pastTwoMonthsTimestamp = calendar.getTimeInMillis();
```
4. 如果需要格式化日期,可以转换成 Date 对象再显示:
```java
Date pastDate = new Date(pastTwoMonthsTimestamp);
String formattedDate = SimpleDateFormat.getDateTimeInstance().format(pastDate);
```
注意:`add()` 方法的第一个参数表示调整的类型,第二个参数是调整的数量。`MONTH` 表示月份。
相关问题
Android Settings.System设置系统时间
要设置Android系统的时间,可以通过以下代码:
```java
long timeMillis = System.currentTimeMillis();
Settings.System.putInt(getContentResolver(), Settings.System.AUTO_TIME,0);
Settings.System.putIntContentResolver(), Settings.System.AUTO_TIME_ZONE, 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME, 0);
Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeMillis);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long when = calendar.getTimeInMillis();
if (when / 1000 < Integer.MAX_VALUE) {
SystemClock.setCurrentTimeMillis(when);
}
```
其中,`year`是要设置的年份,`month`是要设置的月份(从0开始,0代表1月),`day`是要设置的日份,`hour`是要设置的小时数,`minute`是要设置的分钟数。
需要注意的是,这个操作需要`android.permission.SET_TIME`权限。另外,`AUTO_TIME`和`AUTO_TIME_ZONE`设置为0表示关闭自动更新时间和时区的功能。为了避免安全问题,这两个设置在Android 6.0及以上版本需要在系统设置中手动开启。
阅读全文