如何停止日历转换为AM_PM格式

时间:2017-05-17 07:14:36

标签: android calendar

我正在使用我正在使用的app,hr,min,day,month和year。现在我必须将其转换为**毫秒。 我使用日历类来完成此操作。 但我的问题日历将其转换为AM_PM格式,这会导致错误。

参见我的方法。

 public static long getTimeStamp(int day, int month, int year, int hour, int min) {
    Calendar c = Calendar.getInstance(Locale.ENGLISH);
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    c.set(Calendar.DAY_OF_MONTH, day);
    c.set(Calendar.HOUR, hour);
    c.set(Calendar.MINUTE, min);
    Log.d(Const.TAG, "getTimeStamp: " + c.getTimeInMillis() / 1000);
    return (c.getTimeInMillis() / 1000);
}

现在如果我将14设为小时。它将它转换为02.如何解决这个问题。提前谢谢。

3 个答案:

答案 0 :(得分:1)

改变这个:

c.set(Calendar.HOUR, hour);

像这样:

c.set(Calendar.HOUR_OF_DAY, hour);

答案 1 :(得分:1)

试试此代码

public static long getTimeStamp(int day, int month, int year, int hour, int min) {

       Calendar calendar = Calendar.getInstance();
        calendar.set(year, month,day, 
                    hour, min, 0);
        long miliseconds = calendar.getTimeInMillis();
return miliseconds;

}

答案 2 :(得分:0)

尝试使用,

public static byte[] ConstructEcdsaSigValue(byte[] rs)
{
    if (rs == null)
        throw new ArgumentNullException(nameof(rs));

    if (rs.Length < 2 || rs.Length % 2 != 0)
        throw new ArgumentException("Invalid length", nameof(rs));

    int halfLen = rs.Length / 2;

    byte[] half1 = new byte[halfLen];
    Array.Copy(rs, 0, half1, 0, halfLen);
    var r = new Org.BouncyCastle.Math.BigInteger(1, half1);

    byte[] half2 = new byte[halfLen];
    Array.Copy(rs, halfLen, half2, 0, halfLen);
    var s = new Org.BouncyCastle.Math.BigInteger(1, half2);

    var derSequence = new Org.BouncyCastle.Asn1.DerSequence(
        new Org.BouncyCastle.Asn1.DerInteger(r),
        new Org.BouncyCastle.Asn1.DerInteger(s));

    return derSequence.GetDerEncoded();
}

转换为毫秒。