当前位置: 首页 > 知识库问答 >
问题:

如何通过谷歌语音输入在日/月/年格式的日期?

狄誉
2023-03-14

我想通过谷歌语音输入将日期作为用户的文本。所以当用户说:

2022年7月8日

然后它会以dd-mm-yyyy格式拆分该字符串。如何获取?我应该使用任何其他方法通过语音输入获取日期吗?

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 100) {
        if (resultCode == RESULT_OK && null != data) {
            ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

            String date = result.get(0);

            date =   date.replace("january", "1");
            date =   date.replace("february", "2");
            date =   date.replace("march", "3");
            date =   date.replace("april", "4");
            date =   date.replace("may", "5");
            date =   date.replace("june", "6");
            date =   date.replace("july", "7");
            date =   date.replace("august", "8");
            date =   date.replace("september", "9");
            date =   date.replace("october", "10");
            date =   date.replace("november", "11");
            date =   date.replace("december", "12");
            String day = date.substring(1, 2);
            String month = date.substring(2, 7);
            String year = date.substring(date.length() - 4);
            String year1 = year.replaceAll("[^A-Za-z]", "");

            mDatebtn.setText(day + "-" + month + "-" + year1);
        }
    }
}

共有1个答案

昌乐生
2023-03-14

如果您可以使用java。时间,您可以在不操纵字符串的情况下进行转换。

你会需要

  • 两个日期时间格式s
    • 处理输入String
    • 处理所需输出/结果格式的第二个
    public static void main(String[] args) {
        // spoken date
        String userWords = "8 July 2022";
        // prepare two DateTimeFormatters, one for parsing the user's words and
        DateTimeFormatter dtfParse = DateTimeFormatter.ofPattern(
                                                        "d MMMM uuuu",
                                                        Locale.ENGLISH);
        // a second one to be used in order to format the desired result
        DateTimeFormatter dtfFormat = DateTimeFormatter.ofPattern(
                                                        "dd-MM-uuuu",
                                                        Locale.ENGLISH);
        // parse the input with the first formatter
        LocalDate localDate = LocalDate.parse(userWords, dtfParse);
        // and print it formatted by the second one
        System.out.println(localDate.format(dtfFormat));
    }
    

    代码的输出:

    08-07-2022
    

 类似资料:
  • 我必须在oracle sql中获取日文格式的日期(2008年12月31日)。 我尝试从dual中选择\u CHAR(sysdate,'yyyyy-MON-DD','nls\u date\u language=''JAPANESE'');但我得到了2019-4年月 -04 . 我没有得到年份和日期符号。 如果有办法在oracle sql中实现,请告诉我。

  • 2021年3月1日,谷歌文本到语音发布了测试版功能,包括对ssml

  • 类似于: 2016年4月1日 2016年4月3日 2016年4月22日的日期格式将是什么 那么有没有API可以这样解析日期呢? 编辑:重复的问题不包含任何关于分析日期1(st)、2(nd)、3(rd)的答案。我不知道如何分析第1中的st,第2中的nd和第3中的rd。

  • 我创建了一个。ctl文件,以便在Oracle11g中插入一些数据。在输入文件中,有一个名为LAST_DATE的列,其格式为(MM/DD/YYYY),在oracle中也有相同的列,其日期为datatype。但是当我试图插入数据时,它的格式会自动从(mm/dd/yyyy)或(04/25/2016)更改为(dd/mm/yyyy)或(25-04-2016)。我怎样才能解决这个问题。我还在我的ctl文件中定

  • 我有一个python脚本,它将我的一些约会同步到两个不同的谷歌账户,两个账户都有一个谷歌日历,显然设置相同(时区设置也相同),在调用下载约会列表的时候然而,在日历上,调用返回具有不同日期格式的约会,具体取决于我要查询的日历。 使用的库是google开发的库(使用的Python版本是3.6) 脚本(在两种情况下都在同一台计算机上运行)如下所示: 我想这是一些关于日历配置的问题,但是我在设置中没有找到

  • ECMA-262 语言规范第 21.4.1.15.1 段详细介绍了扩展年份日期格式 引述: 21.4.1.15.1 扩展年份 涵盖1970年1月1日(21.4.1.1)前后约273,790年的全时值范围需要表示0之前或9999之后的年份。ISO 8601允许扩展年份表示。 在简化的ECMAScript格式中,这种扩展的年份表示应具有6位数字,并且始终以或符号作为前缀。0年被视为正,因此以符号作为前