如何从用户在android studio中提供的日期中减去固定天数?

Posted

技术标签:

【中文标题】如何从用户在android studio中提供的日期中减去固定天数?【英文标题】:how to subtract fixed number of days from a provided date by the user in android studio? 【发布时间】:2021-07-01 04:55:44 【问题描述】:

例如如果用户填写日期并且有一个由三个选项组成的微调器,即 70,90 和 45。因此,如果用户填写日期并选择例如 70 并单击提交,则应从填写的日期中减去 20 天应显示用户和结果,即结果将是用户填写日期前 20 天的日期。如果选择 90 则 30 天前等等...(java 代码) the ui image

<Button
    android:id="@+id/backBtn7"
    android:layout_
    android:layout_
    android:text="Back"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.915" />

<EditText
    android:id="@+id/input1"
    android:layout_
    android:layout_
    android:ems="10"
    android:hint="Shipment Date"
    android:inputType="date"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.532"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.096" />

<Spinner
    android:id="@+id/spinner1"
    android:layout_
    android:layout_
    android:text="Lead Time"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.529"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/input1"
    app:layout_constraintVertical_bias="0.063"
    tools:ignore="HardcodedText" />

<Button
    android:id="@+id/submitBtn2"
    android:layout_
    android:layout_
    android:text="Submit"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.539"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/spinner1"
    app:layout_constraintVertical_bias="0.074" />

<RelativeLayout
    android:layout_
    android:layout_>

    <TextView
        android:layout_
        android:layout_
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/tv_result"
        android:layout_centerInParent="true" />
</RelativeLayout>

Java 代码

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_p_c_d_calculator);
    backBtn7 = findViewById(R.id.backBtn7);
    submitBtn2 = findViewById(R.id.submitBtn2);
    getSupportActionBar().setTitle("PCD Calculator");
    tv_result = (TextView) findViewById(R.id.tv_result);
    input1 = findViewById(R.id.input1);
    spinner1 = findViewById(R.id.spinner1);
    submitBtn2 = findViewById(R.id.submitBtn2);


    submitBtn2.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 

        
    );



    tv_result.setText("PCD: ");


    String[] users =  "70", "90", "45" ;
    Spinner spin = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, users);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spin.setPrompt("Lead Time");
    spin.setAdapter(adapter);


    backBtn7.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            startActivity(new Intent(getApplicationContext(),MainActivity.class));
            finish();
        
    );
    


【问题讨论】:

你试过什么?请包含所有相关代码以帮助提供具体答案。 目前我还没有尝试任何具体的东西,因为我无法理解如何执行和继续。 【参考方案1】:

LocalDate#minusDays

您可以使用java.time 包中的LocalDate

您可以使用LocalDate#of 静态方法创建LocalDate 实例:

    LocalDate date = LocalDate.of(2021, 4, 5); // Apr 5, 2021

如果你的日期是作为字符串输入的,你可以使用 LocalDate#parse 方法和 DateTimeFormatter,例如:

    LocalDate date = LocalDate.parse("2021/04/05", DateTimeFormatter.ofPattern("yyyy/MM/dd")); // Apr 5, 2021

最后,拥有LocalDate 实例,您可以使用很多方法来处理日期:

    LocalDate dateMinus30Days = date.minusDays(30);

有关详细信息,您可以查看docs 或例如tutorial。

【讨论】:

对不起,解决办法一点都不清楚 @OLezhko 仅供参考,Stack Overflow 使用Markdown 的变体来编辑页面内容。您可以使用反引号代替 html code 标签。例如,我在此答案中更改了一些。请参阅Markdown Help 页面。感谢您参与 Stack Overflow。

以上是关于如何从用户在android studio中提供的日期中减去固定天数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 2019 中捕获图片而不进行预览

如何使用firebase在android studio中从一个用户向另一个用户发送通知[重复]

如何向Android Studio里导入从Github上面下载的Project?

当用户切换到 Android Studio Kotlin 中的其他页面时,如何停止播放音乐?

从 Android Studio 3.0 构建时如何克服应用未安装错误?

如何在 Android Studio 中显示隐藏文件