You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何获取27-mar-2018格式的系统当前日期?

解决Android日期格式化问题:获取dd-MMM-yyyy格式日期

我来帮你搞定这个日期格式化的问题~你遇到的问题核心是用错了日期模式字符,还可能没注意Locale的设置,导致结果完全不符合预期。

为什么之前出错?

  • 你尝试的dd-mon-yyyy里,mon并不是Android/Java日期格式化的合法模式字符,所以系统会提示格式不支持。
  • 你得到的27-012-2018应该是误用了其他模式(比如重复的M或错误占位符),导致月份被解析成了数字形式。

正确的解决方法

要得到27-Mar-2018这种格式,正确的模式是dd-MMM-yyyy,同时必须指定英文Locale(避免系统语言影响月份缩写)。下面分两种常用场景给出代码:

场景1:兼容Android 7.0及以下(使用SimpleDateFormat)

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 获取当前日期
        Date currentDate = new Date();
        // 初始化格式化器,指定格式和英文Locale
        SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
        // 格式化日期
        String formattedDate = dateFormatter.format(currentDate);
        
        // 打印或使用格式化后的日期
        Log.d("FormattedDate", formattedDate); // 输出示例:27-Mar-2018
    }
}

场景2:Android 8.0及以上(推荐使用java.time API)

Android 8.0开始支持Java 8的时间API,这个API更安全、易维护:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 获取当前本地日期
        LocalDate currentDate = LocalDate.now();
        // 初始化格式化器,指定格式和英文Locale
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.ENGLISH);
        // 格式化日期
        String formattedDate = currentDate.format(formatter);
        
        Log.d("FormattedDate", formattedDate); // 输出示例:27-Mar-2018
    }
}

关键注意点

  • 必须指定Locale.ENGLISH:如果不指定,当系统语言为非英文时,月份缩写会变成对应语言的形式(比如中文会显示"三月"),达不到你要的英文缩写效果。
  • 模式字符区分大小写:MMM代表三个字母的月份缩写,MM是两位数字月份,M是1-2位数字月份,一定要区分清楚。

内容的提问来源于stack exchange,提问作者Shivam Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:20:52